| Index: node_modules/vulcanize/node_modules/update-notifier/node_modules/configstore/node_modules/js-yaml/node_modules/esprima/test/test.js
 | 
| diff --git a/node_modules/vulcanize/node_modules/update-notifier/node_modules/configstore/node_modules/js-yaml/node_modules/esprima/test/test.js b/node_modules/vulcanize/node_modules/update-notifier/node_modules/configstore/node_modules/js-yaml/node_modules/esprima/test/test.js
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..8ceee54b749716bac4b4e159ca4f5e01e88cdc67
 | 
| --- /dev/null
 | 
| +++ b/node_modules/vulcanize/node_modules/update-notifier/node_modules/configstore/node_modules/js-yaml/node_modules/esprima/test/test.js
 | 
| @@ -0,0 +1,20238 @@
 | 
| +/*
 | 
| +  Copyright (C) 2012 Ariya Hidayat <ariya.hidayat@gmail.com>
 | 
| +  Copyright (C) 2012 Joost-Wim Boekesteijn <joost-wim@boekesteijn.nl>
 | 
| +  Copyright (C) 2012 Yusuke Suzuki <utatane.tea@gmail.com>
 | 
| +  Copyright (C) 2012 Arpad Borsos <arpad.borsos@googlemail.com>
 | 
| +  Copyright (C) 2011 Ariya Hidayat <ariya.hidayat@gmail.com>
 | 
| +  Copyright (C) 2011 Yusuke Suzuki <utatane.tea@gmail.com>
 | 
| +  Copyright (C) 2011 Arpad Borsos <arpad.borsos@googlemail.com>
 | 
| +
 | 
| +  Redistribution and use in source and binary forms, with or without
 | 
| +  modification, are permitted provided that the following conditions are met:
 | 
| +
 | 
| +    * Redistributions of source code must retain the above copyright
 | 
| +      notice, this list of conditions and the following disclaimer.
 | 
| +    * Redistributions in binary form must reproduce the above copyright
 | 
| +      notice, this list of conditions and the following disclaimer in the
 | 
| +      documentation and/or other materials provided with the distribution.
 | 
| +
 | 
| +  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 | 
| +  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
| +  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
| +  ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
 | 
| +  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 | 
| +  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 | 
| +  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 | 
| +  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 | 
| +  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 | 
| +  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 | 
| +*/
 | 
| +
 | 
| +var testFixture = {
 | 
| +
 | 
| +    'Primary Expression': {
 | 
| +
 | 
| +        'this\n': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'ThisExpression',
 | 
| +                    range: [0, 4],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 4 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 2, column: 0 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 5],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 2, column: 0 }
 | 
| +            },
 | 
| +            tokens: [{
 | 
| +                type: 'Keyword',
 | 
| +                value: 'this',
 | 
| +                range: [0, 4],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 4 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        'null\n': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: null,
 | 
| +                    raw: 'null',
 | 
| +                    range: [0, 4],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 4 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 2, column: 0 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 5],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 2, column: 0 }
 | 
| +            },
 | 
| +            tokens: [{
 | 
| +                type: 'Null',
 | 
| +                value: 'null',
 | 
| +                range: [0, 4],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 4 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '\n    42\n\n': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [5, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 2, column: 4 },
 | 
| +                        end: { line: 2, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [5, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 2, column: 4 },
 | 
| +                    end: { line: 4, column: 0 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [5, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 2, column: 4 },
 | 
| +                end: { line: 4, column: 0 }
 | 
| +            },
 | 
| +            tokens: [{
 | 
| +                type: 'Numeric',
 | 
| +                value: '42',
 | 
| +                range: [5, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 2, column: 4 },
 | 
| +                    end: { line: 2, column: 6 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '(1 + 2 ) * 3': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '*',
 | 
| +                left: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '+',
 | 
| +                    left: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 1,
 | 
| +                        raw: '1',
 | 
| +                        range: [1, 2],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 1 },
 | 
| +                            end: { line: 1, column: 2 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 2,
 | 
| +                        raw: '2',
 | 
| +                        range: [5, 6],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 5 },
 | 
| +                            end: { line: 1, column: 6 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [1, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 1 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 3,
 | 
| +                    raw: '3',
 | 
| +                    range: [11, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 11 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 12],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 12 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 12],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 12 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Grouping Operator': {
 | 
| +
 | 
| +        '(1) + (2  ) + 3': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '+',
 | 
| +                left: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '+',
 | 
| +                    left: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 1,
 | 
| +                        raw: '1',
 | 
| +                        range: [1, 2],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 1 },
 | 
| +                            end: { line: 1, column: 2 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 2,
 | 
| +                        raw: '2',
 | 
| +                        range: [7, 8],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 7 },
 | 
| +                            end: { line: 1, column: 8 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 11],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 11 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 3,
 | 
| +                    raw: '3',
 | 
| +                    range: [14, 15],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 14 },
 | 
| +                        end: { line: 1, column: 15 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 15],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 15 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 15],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 15 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '4 + 5 << (6)': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '<<',
 | 
| +                left: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '+',
 | 
| +                    left: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 4,
 | 
| +                        raw: '4',
 | 
| +                        range: [0, 1],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 1 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 5,
 | 
| +                        raw: '5',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 6,
 | 
| +                    raw: '6',
 | 
| +                    range: [10, 11],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 10 },
 | 
| +                        end: { line: 1, column: 11 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 12],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 12 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 12],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 12 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Array Initializer': {
 | 
| +
 | 
| +        'x = []': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'AssignmentExpression',
 | 
| +                    operator: '=',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [0, 1],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 1 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'ArrayExpression',
 | 
| +                        elements: [],
 | 
| +                        range: [4, 6],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 6 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            },
 | 
| +            tokens: [{
 | 
| +                type: 'Identifier',
 | 
| +                value: 'x',
 | 
| +                range: [0, 1],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 1 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Punctuator',
 | 
| +                value: '=',
 | 
| +                range: [2, 3],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 2 },
 | 
| +                    end: { line: 1, column: 3 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Punctuator',
 | 
| +                value: '[',
 | 
| +                range: [4, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Punctuator',
 | 
| +                value: ']',
 | 
| +                range: [5, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 5 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        'x = [ ]': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ArrayExpression',
 | 
| +                    elements: [],
 | 
| +                    range: [4, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 7 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 7],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 7 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = [ 42 ]': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ArrayExpression',
 | 
| +                    elements: [{
 | 
| +                        type: 'Literal',
 | 
| +                        value: 42,
 | 
| +                        raw: '42',
 | 
| +                        range: [6, 8],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 8 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 10],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 10 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 10],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 10 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 10],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 10 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = [ 42, ]': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ArrayExpression',
 | 
| +                    elements: [{
 | 
| +                        type: 'Literal',
 | 
| +                        value: 42,
 | 
| +                        raw: '42',
 | 
| +                        range: [6, 8],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 8 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 11],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 11 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 11],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 11 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = [ ,, 42 ]': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ArrayExpression',
 | 
| +                    elements: [
 | 
| +                        null,
 | 
| +                        null,
 | 
| +                        {
 | 
| +                            type: 'Literal',
 | 
| +                            value: 42,
 | 
| +                            raw: '42',
 | 
| +                            range: [9, 11],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 9 },
 | 
| +                                end: { line: 1, column: 11 }
 | 
| +                            }
 | 
| +                        }],
 | 
| +                    range: [4, 13],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 13 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 13],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 13 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = [ 1, 2, 3, ]': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ArrayExpression',
 | 
| +                    elements: [{
 | 
| +                        type: 'Literal',
 | 
| +                        value: 1,
 | 
| +                        raw: '1',
 | 
| +                        range: [6, 7],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 7 }
 | 
| +                        }
 | 
| +                    }, {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 2,
 | 
| +                        raw: '2',
 | 
| +                        range: [9, 10],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 9 },
 | 
| +                            end: { line: 1, column: 10 }
 | 
| +                        }
 | 
| +                    }, {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 3,
 | 
| +                        raw: '3',
 | 
| +                        range: [12, 13],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 12 },
 | 
| +                            end: { line: 1, column: 13 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 16],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 16 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 16],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 16],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 16 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = [ 1, 2,, 3, ]': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ArrayExpression',
 | 
| +                    elements: [{
 | 
| +                        type: 'Literal',
 | 
| +                        value: 1,
 | 
| +                        raw: '1',
 | 
| +                        range: [6, 7],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 7 }
 | 
| +                        }
 | 
| +                    }, {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 2,
 | 
| +                        raw: '2',
 | 
| +                        range: [9, 10],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 9 },
 | 
| +                            end: { line: 1, column: 10 }
 | 
| +                        }
 | 
| +                    }, null, {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 3,
 | 
| +                        raw: '3',
 | 
| +                        range: [13, 14],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 13 },
 | 
| +                            end: { line: 1, column: 14 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 17],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 17 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 17],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 17 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 17],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 17 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '日本語 = []': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: '日本語',
 | 
| +                    range: [0, 3],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 3 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ArrayExpression',
 | 
| +                    elements: [],
 | 
| +                    range: [6, 8],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 6 },
 | 
| +                        end: { line: 1, column: 8 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 8],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 8 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 8],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 8 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'T\u203F = []': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'T\u203F',
 | 
| +                    range: [0, 2],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 2 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ArrayExpression',
 | 
| +                    elements: [],
 | 
| +                    range: [5, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 7 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 7],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 7 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'T\u200C = []': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'T\u200C',
 | 
| +                    range: [0, 2],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 2 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ArrayExpression',
 | 
| +                    elements: [],
 | 
| +                    range: [5, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 7 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 7],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 7 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'T\u200D = []': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'T\u200D',
 | 
| +                    range: [0, 2],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 2 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ArrayExpression',
 | 
| +                    elements: [],
 | 
| +                    range: [5, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 7 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 7],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 7 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '\u2163\u2161 = []': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: '\u2163\u2161',
 | 
| +                    range: [0, 2],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 2 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ArrayExpression',
 | 
| +                    elements: [],
 | 
| +                    range: [5, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 7 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 7],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 7 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '\u2163\u2161\u200A=\u2009[]': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: '\u2163\u2161',
 | 
| +                    range: [0, 2],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 2 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ArrayExpression',
 | 
| +                    elements: [],
 | 
| +                    range: [5, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 7 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 7],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 7 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Object Initializer': {
 | 
| +
 | 
| +        'x = {}': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [],
 | 
| +                    range: [4, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [],
 | 
| +                    range: [4, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 7 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 7],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 7 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { answer: 42 }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'answer',
 | 
| +                            range: [6, 12],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 6 },
 | 
| +                                end: { line: 1, column: 12 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'Literal',
 | 
| +                            value: 42,
 | 
| +                            raw: '42',
 | 
| +                            range: [14, 16],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 14 },
 | 
| +                                end: { line: 1, column: 16 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'init',
 | 
| +                        range: [6, 16],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 16 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 18],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 18 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 18],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 18 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 18],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 18 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { if: 42 }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'if',
 | 
| +                            range: [6, 8],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 6 },
 | 
| +                                end: { line: 1, column: 8 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'Literal',
 | 
| +                            value: 42,
 | 
| +                            raw: '42',
 | 
| +                            range: [10, 12],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 10 },
 | 
| +                                end: { line: 1, column: 12 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'init',
 | 
| +                        range: [6, 12],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 12 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 14],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 14 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 14],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 14 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 14],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 14 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { true: 42 }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'true',
 | 
| +                            range: [6, 10],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 6 },
 | 
| +                                end: { line: 1, column: 10 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'Literal',
 | 
| +                            value: 42,
 | 
| +                            raw: '42',
 | 
| +                            range: [12, 14],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 12 },
 | 
| +                                end: { line: 1, column: 14 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'init',
 | 
| +                        range: [6, 14],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 14 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 16],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 16 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 16],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 16],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 16 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { false: 42 }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'false',
 | 
| +                            range: [6, 11],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 6 },
 | 
| +                                end: { line: 1, column: 11 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'Literal',
 | 
| +                            value: 42,
 | 
| +                            raw: '42',
 | 
| +                            range: [13, 15],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 13 },
 | 
| +                                end: { line: 1, column: 15 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'init',
 | 
| +                        range: [6, 15],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 15 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 17],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 17 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 17],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 17 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 17],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 17 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { null: 42 }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'null',
 | 
| +                            range: [6, 10],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 6 },
 | 
| +                                end: { line: 1, column: 10 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'Literal',
 | 
| +                            value: 42,
 | 
| +                            raw: '42',
 | 
| +                            range: [12, 14],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 12 },
 | 
| +                                end: { line: 1, column: 14 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'init',
 | 
| +                        range: [6, 14],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 14 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 16],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 16 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 16],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 16],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 16 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { "answer": 42 }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Literal',
 | 
| +                            value: 'answer',
 | 
| +                            raw: '"answer"',
 | 
| +                            range: [6, 14],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 6 },
 | 
| +                                end: { line: 1, column: 14 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'Literal',
 | 
| +                            value: 42,
 | 
| +                            raw: '42',
 | 
| +                            range: [16, 18],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 16 },
 | 
| +                                end: { line: 1, column: 18 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'init',
 | 
| +                        range: [6, 18],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 18 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 20],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 20 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 20],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 20 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 20],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 20 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { x: 1, x: 2 }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [
 | 
| +                        {
 | 
| +                            type: 'Property',
 | 
| +                            key: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'x',
 | 
| +                                range: [6, 7],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 6 },
 | 
| +                                    end: { line: 1, column: 7 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            value: {
 | 
| +                                type: 'Literal',
 | 
| +                                value: 1,
 | 
| +                                raw: '1',
 | 
| +                                range: [9, 10],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 9 },
 | 
| +                                    end: { line: 1, column: 10 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            kind: 'init',
 | 
| +                            range: [6, 10],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 6 },
 | 
| +                                end: { line: 1, column: 10 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        {
 | 
| +                            type: 'Property',
 | 
| +                            key: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'x',
 | 
| +                                range: [12, 13],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 12 },
 | 
| +                                    end: { line: 1, column: 13 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            value: {
 | 
| +                                type: 'Literal',
 | 
| +                                value: 2,
 | 
| +                                raw: '2',
 | 
| +                                range: [15, 16],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 15 },
 | 
| +                                    end: { line: 1, column: 16 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            kind: 'init',
 | 
| +                            range: [12, 16],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 12 },
 | 
| +                                end: { line: 1, column: 16 }
 | 
| +                            }
 | 
| +                        }
 | 
| +                    ],
 | 
| +                    range: [4, 18],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 18 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 18],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 18 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 18],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 18 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { get width() { return m_width } }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'width',
 | 
| +                            range: [10, 15],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 10 },
 | 
| +                                end: { line: 1, column: 15 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'FunctionExpression',
 | 
| +                            id: null,
 | 
| +                            params: [],
 | 
| +                            defaults: [],
 | 
| +                            body: {
 | 
| +                                type: 'BlockStatement',
 | 
| +                                body: [{
 | 
| +                                    type: 'ReturnStatement',
 | 
| +                                    argument: {
 | 
| +                                        type: 'Identifier',
 | 
| +                                        name: 'm_width',
 | 
| +                                        range: [27, 34],
 | 
| +                                        loc: {
 | 
| +                                            start: { line: 1, column: 27 },
 | 
| +                                            end: { line: 1, column: 34 }
 | 
| +                                        }
 | 
| +                                    },
 | 
| +                                    range: [20, 35],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 20 },
 | 
| +                                        end: { line: 1, column: 35 }
 | 
| +                                    }
 | 
| +                                }],
 | 
| +                                range: [18, 36],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 18 },
 | 
| +                                    end: { line: 1, column: 36 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            rest: null,
 | 
| +                            generator: false,
 | 
| +                            expression: false,
 | 
| +                            range: [18, 36],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 18 },
 | 
| +                                end: { line: 1, column: 36 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'get',
 | 
| +                        range: [6, 36],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 36 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 38],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 38 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 38],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 38 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 38],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 38 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { get undef() {} }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'undef',
 | 
| +                            range: [10, 15],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 10 },
 | 
| +                                end: { line: 1, column: 15 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'FunctionExpression',
 | 
| +                            id: null,
 | 
| +                            params: [],
 | 
| +                            defaults: [],
 | 
| +                            body: {
 | 
| +                                type: 'BlockStatement',
 | 
| +                                body: [],
 | 
| +                                range: [18, 20],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 18 },
 | 
| +                                    end: { line: 1, column: 20 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            rest: null,
 | 
| +                            generator: false,
 | 
| +                            expression: false,
 | 
| +                            range: [18, 20],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 18 },
 | 
| +                                end: { line: 1, column: 20 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'get',
 | 
| +                        range: [6, 20],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 20 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 22],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 22 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 22],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 22 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 22],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 22 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { get if() {} }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'if',
 | 
| +                            range: [10, 12],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 10 },
 | 
| +                                end: { line: 1, column: 12 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'FunctionExpression',
 | 
| +                            id: null,
 | 
| +                            params: [],
 | 
| +                            defaults: [],
 | 
| +                            body: {
 | 
| +                                type: 'BlockStatement',
 | 
| +                                body: [],
 | 
| +                                range: [15, 17],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 15 },
 | 
| +                                    end: { line: 1, column: 17 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            rest: null,
 | 
| +                            generator: false,
 | 
| +                            expression: false,
 | 
| +                            range: [15, 17],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 15 },
 | 
| +                                end: { line: 1, column: 17 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'get',
 | 
| +                        range: [6, 17],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 17 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 19],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 19 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 19],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 19 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 19],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 19 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { get true() {} }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'true',
 | 
| +                            range: [10, 14],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 10 },
 | 
| +                                end: { line: 1, column: 14 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'FunctionExpression',
 | 
| +                            id: null,
 | 
| +                            params: [],
 | 
| +                            defaults: [],
 | 
| +                            body: {
 | 
| +                                type: 'BlockStatement',
 | 
| +                                body: [],
 | 
| +                                range: [17, 19],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 17 },
 | 
| +                                    end: { line: 1, column: 19 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            rest: null,
 | 
| +                            generator: false,
 | 
| +                            expression: false,
 | 
| +                            range: [17, 19],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 17 },
 | 
| +                                end: { line: 1, column: 19 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'get',
 | 
| +                        range: [6, 19],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 19 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 21],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 21 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 21],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 21 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 21],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 21 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { get false() {} }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'false',
 | 
| +                            range: [10, 15],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 10 },
 | 
| +                                end: { line: 1, column: 15 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'FunctionExpression',
 | 
| +                            id: null,
 | 
| +                            params: [],
 | 
| +                            defaults: [],
 | 
| +                            body: {
 | 
| +                                type: 'BlockStatement',
 | 
| +                                body: [],
 | 
| +                                range: [18, 20],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 18 },
 | 
| +                                    end: { line: 1, column: 20 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            rest: null,
 | 
| +                            generator: false,
 | 
| +                            expression: false,
 | 
| +                            range: [18, 20],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 18 },
 | 
| +                                end: { line: 1, column: 20 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'get',
 | 
| +                        range: [6, 20],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 20 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 22],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 22 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 22],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 22 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 22],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 22 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { get null() {} }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'null',
 | 
| +                            range: [10, 14],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 10 },
 | 
| +                                end: { line: 1, column: 14 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'FunctionExpression',
 | 
| +                            id: null,
 | 
| +                            params: [],
 | 
| +                            defaults: [],
 | 
| +                            body: {
 | 
| +                                type: 'BlockStatement',
 | 
| +                                body: [],
 | 
| +                                range: [17, 19],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 17 },
 | 
| +                                    end: { line: 1, column: 19 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            rest: null,
 | 
| +                            generator: false,
 | 
| +                            expression: false,
 | 
| +                            range: [17, 19],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 17 },
 | 
| +                                end: { line: 1, column: 19 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'get',
 | 
| +                        range: [6, 19],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 19 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 21],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 21 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 21],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 21 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 21],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 21 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { get "undef"() {} }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Literal',
 | 
| +                            value: 'undef',
 | 
| +                            raw: '"undef"',
 | 
| +                            range: [10, 17],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 10 },
 | 
| +                                end: { line: 1, column: 17 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'FunctionExpression',
 | 
| +                            id: null,
 | 
| +                            params: [],
 | 
| +                            defaults: [],
 | 
| +                            body: {
 | 
| +                                type: 'BlockStatement',
 | 
| +                                body: [],
 | 
| +                                range: [20, 22],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 20 },
 | 
| +                                    end: { line: 1, column: 22 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            rest: null,
 | 
| +                            generator: false,
 | 
| +                            expression: false,
 | 
| +                            range: [20, 22],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 20 },
 | 
| +                                end: { line: 1, column: 22 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'get',
 | 
| +                        range: [6, 22],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 22 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 24],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 24 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 24],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 24 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 24],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 24 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { get 10() {} }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Literal',
 | 
| +                            value: 10,
 | 
| +                            raw: '10',
 | 
| +                            range: [10, 12],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 10 },
 | 
| +                                end: { line: 1, column: 12 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'FunctionExpression',
 | 
| +                            id: null,
 | 
| +                            params: [],
 | 
| +                            defaults: [],
 | 
| +                            body: {
 | 
| +                                type: 'BlockStatement',
 | 
| +                                body: [],
 | 
| +                                range: [15, 17],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 15 },
 | 
| +                                    end: { line: 1, column: 17 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            rest: null,
 | 
| +                            generator: false,
 | 
| +                            expression: false,
 | 
| +                            range: [15, 17],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 15 },
 | 
| +                                end: { line: 1, column: 17 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'get',
 | 
| +                        range: [6, 17],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 17 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 19],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 19 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 19],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 19 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 19],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 19 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { set width(w) { m_width = w } }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'width',
 | 
| +                            range: [10, 15],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 10 },
 | 
| +                                end: { line: 1, column: 15 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'FunctionExpression',
 | 
| +                            id: null,
 | 
| +                            params: [{
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'w',
 | 
| +                                range: [16, 17],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 16 },
 | 
| +                                    end: { line: 1, column: 17 }
 | 
| +                                }
 | 
| +                            }],
 | 
| +                            defaults: [],
 | 
| +                            body: {
 | 
| +                                type: 'BlockStatement',
 | 
| +                                body: [{
 | 
| +                                    type: 'ExpressionStatement',
 | 
| +                                    expression: {
 | 
| +                                        type: 'AssignmentExpression',
 | 
| +                                        operator: '=',
 | 
| +                                        left: {
 | 
| +                                            type: 'Identifier',
 | 
| +                                            name: 'm_width',
 | 
| +                                            range: [21, 28],
 | 
| +                                            loc: {
 | 
| +                                                start: { line: 1, column: 21 },
 | 
| +                                                end: { line: 1, column: 28 }
 | 
| +                                            }
 | 
| +                                        },
 | 
| +                                        right: {
 | 
| +                                            type: 'Identifier',
 | 
| +                                            name: 'w',
 | 
| +                                            range: [31, 32],
 | 
| +                                            loc: {
 | 
| +                                                start: { line: 1, column: 31 },
 | 
| +                                                end: { line: 1, column: 32 }
 | 
| +                                            }
 | 
| +                                        },
 | 
| +                                        range: [21, 32],
 | 
| +                                        loc: {
 | 
| +                                            start: { line: 1, column: 21 },
 | 
| +                                            end: { line: 1, column: 32 }
 | 
| +                                        }
 | 
| +                                    },
 | 
| +                                    range: [21, 33],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 21 },
 | 
| +                                        end: { line: 1, column: 33 }
 | 
| +                                    }
 | 
| +                                }],
 | 
| +                                range: [19, 34],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 19 },
 | 
| +                                    end: { line: 1, column: 34 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            rest: null,
 | 
| +                            generator: false,
 | 
| +                            expression: false,
 | 
| +                            range: [19, 34],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 19 },
 | 
| +                                end: { line: 1, column: 34 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'set',
 | 
| +                        range: [6, 34],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 34 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 36],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 36 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 36],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 36 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 36],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 36 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { set if(w) { m_if = w } }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'if',
 | 
| +                            range: [10, 12],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 10 },
 | 
| +                                end: { line: 1, column: 12 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'FunctionExpression',
 | 
| +                            id: null,
 | 
| +                            params: [{
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'w',
 | 
| +                                range: [13, 14],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 13 },
 | 
| +                                    end: { line: 1, column: 14 }
 | 
| +                                }
 | 
| +                            }],
 | 
| +                            defaults: [],
 | 
| +                            body: {
 | 
| +                                type: 'BlockStatement',
 | 
| +                                body: [{
 | 
| +                                    type: 'ExpressionStatement',
 | 
| +                                    expression: {
 | 
| +                                        type: 'AssignmentExpression',
 | 
| +                                        operator: '=',
 | 
| +                                        left: {
 | 
| +                                            type: 'Identifier',
 | 
| +                                            name: 'm_if',
 | 
| +                                            range: [18, 22],
 | 
| +                                            loc: {
 | 
| +                                                start: { line: 1, column: 18 },
 | 
| +                                                end: { line: 1, column: 22 }
 | 
| +                                            }
 | 
| +                                        },
 | 
| +                                        right: {
 | 
| +                                            type: 'Identifier',
 | 
| +                                            name: 'w',
 | 
| +                                            range: [25, 26],
 | 
| +                                            loc: {
 | 
| +                                                start: { line: 1, column: 25 },
 | 
| +                                                end: { line: 1, column: 26 }
 | 
| +                                            }
 | 
| +                                        },
 | 
| +                                        range: [18, 26],
 | 
| +                                        loc: {
 | 
| +                                            start: { line: 1, column: 18 },
 | 
| +                                            end: { line: 1, column: 26 }
 | 
| +                                        }
 | 
| +                                    },
 | 
| +                                    range: [18, 27],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 18 },
 | 
| +                                        end: { line: 1, column: 27 }
 | 
| +                                    }
 | 
| +                                }],
 | 
| +                                range: [16, 28],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 16 },
 | 
| +                                    end: { line: 1, column: 28 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            rest: null,
 | 
| +                            generator: false,
 | 
| +                            expression: false,
 | 
| +                            range: [16, 28],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 16 },
 | 
| +                                end: { line: 1, column: 28 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'set',
 | 
| +                        range: [6, 28],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 28 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 30],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 30 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 30],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 30 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 30],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 30 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { set true(w) { m_true = w } }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'true',
 | 
| +                            range: [10, 14],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 10 },
 | 
| +                                end: { line: 1, column: 14 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'FunctionExpression',
 | 
| +                            id: null,
 | 
| +                            params: [{
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'w',
 | 
| +                                range: [15, 16],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 15 },
 | 
| +                                    end: { line: 1, column: 16 }
 | 
| +                                }
 | 
| +                            }],
 | 
| +                            defaults: [],
 | 
| +                            body: {
 | 
| +                                type: 'BlockStatement',
 | 
| +                                body: [{
 | 
| +                                    type: 'ExpressionStatement',
 | 
| +                                    expression: {
 | 
| +                                        type: 'AssignmentExpression',
 | 
| +                                        operator: '=',
 | 
| +                                        left: {
 | 
| +                                            type: 'Identifier',
 | 
| +                                            name: 'm_true',
 | 
| +                                            range: [20, 26],
 | 
| +                                            loc: {
 | 
| +                                                start: { line: 1, column: 20 },
 | 
| +                                                end: { line: 1, column: 26 }
 | 
| +                                            }
 | 
| +                                        },
 | 
| +                                        right: {
 | 
| +                                            type: 'Identifier',
 | 
| +                                            name: 'w',
 | 
| +                                            range: [29, 30],
 | 
| +                                            loc: {
 | 
| +                                                start: { line: 1, column: 29 },
 | 
| +                                                end: { line: 1, column: 30 }
 | 
| +                                            }
 | 
| +                                        },
 | 
| +                                        range: [20, 30],
 | 
| +                                        loc: {
 | 
| +                                            start: { line: 1, column: 20 },
 | 
| +                                            end: { line: 1, column: 30 }
 | 
| +                                        }
 | 
| +                                    },
 | 
| +                                    range: [20, 31],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 20 },
 | 
| +                                        end: { line: 1, column: 31 }
 | 
| +                                    }
 | 
| +                                }],
 | 
| +                                range: [18, 32],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 18 },
 | 
| +                                    end: { line: 1, column: 32 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            rest: null,
 | 
| +                            generator: false,
 | 
| +                            expression: false,
 | 
| +                            range: [18, 32],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 18 },
 | 
| +                                end: { line: 1, column: 32 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'set',
 | 
| +                        range: [6, 32],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 32 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 34],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 34 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 34],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 34 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 34],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 34 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { set false(w) { m_false = w } }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'false',
 | 
| +                            range: [10, 15],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 10 },
 | 
| +                                end: { line: 1, column: 15 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'FunctionExpression',
 | 
| +                            id: null,
 | 
| +                            params: [{
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'w',
 | 
| +                                range: [16, 17],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 16 },
 | 
| +                                    end: { line: 1, column: 17 }
 | 
| +                                }
 | 
| +                            }],
 | 
| +                            defaults: [],
 | 
| +                            body: {
 | 
| +                                type: 'BlockStatement',
 | 
| +                                body: [{
 | 
| +                                    type: 'ExpressionStatement',
 | 
| +                                    expression: {
 | 
| +                                        type: 'AssignmentExpression',
 | 
| +                                        operator: '=',
 | 
| +                                        left: {
 | 
| +                                            type: 'Identifier',
 | 
| +                                            name: 'm_false',
 | 
| +                                            range: [21, 28],
 | 
| +                                            loc: {
 | 
| +                                                start: { line: 1, column: 21 },
 | 
| +                                                end: { line: 1, column: 28 }
 | 
| +                                            }
 | 
| +                                        },
 | 
| +                                        right: {
 | 
| +                                            type: 'Identifier',
 | 
| +                                            name: 'w',
 | 
| +                                            range: [31, 32],
 | 
| +                                            loc: {
 | 
| +                                                start: { line: 1, column: 31 },
 | 
| +                                                end: { line: 1, column: 32 }
 | 
| +                                            }
 | 
| +                                        },
 | 
| +                                        range: [21, 32],
 | 
| +                                        loc: {
 | 
| +                                            start: { line: 1, column: 21 },
 | 
| +                                            end: { line: 1, column: 32 }
 | 
| +                                        }
 | 
| +                                    },
 | 
| +                                    range: [21, 33],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 21 },
 | 
| +                                        end: { line: 1, column: 33 }
 | 
| +                                    }
 | 
| +                                }],
 | 
| +                                range: [19, 34],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 19 },
 | 
| +                                    end: { line: 1, column: 34 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            rest: null,
 | 
| +                            generator: false,
 | 
| +                            expression: false,
 | 
| +                            range: [19, 34],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 19 },
 | 
| +                                end: { line: 1, column: 34 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'set',
 | 
| +                        range: [6, 34],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 34 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 36],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 36 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 36],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 36 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 36],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 36 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { set null(w) { m_null = w } }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'null',
 | 
| +                            range: [10, 14],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 10 },
 | 
| +                                end: { line: 1, column: 14 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'FunctionExpression',
 | 
| +                            id: null,
 | 
| +                            params: [{
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'w',
 | 
| +                                range: [15, 16],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 15 },
 | 
| +                                    end: { line: 1, column: 16 }
 | 
| +                                }
 | 
| +                            }],
 | 
| +                            defaults: [],
 | 
| +                            body: {
 | 
| +                                type: 'BlockStatement',
 | 
| +                                body: [{
 | 
| +                                    type: 'ExpressionStatement',
 | 
| +                                    expression: {
 | 
| +                                        type: 'AssignmentExpression',
 | 
| +                                        operator: '=',
 | 
| +                                        left: {
 | 
| +                                            type: 'Identifier',
 | 
| +                                            name: 'm_null',
 | 
| +                                            range: [20, 26],
 | 
| +                                            loc: {
 | 
| +                                                start: { line: 1, column: 20 },
 | 
| +                                                end: { line: 1, column: 26 }
 | 
| +                                            }
 | 
| +                                        },
 | 
| +                                        right: {
 | 
| +                                            type: 'Identifier',
 | 
| +                                            name: 'w',
 | 
| +                                            range: [29, 30],
 | 
| +                                            loc: {
 | 
| +                                                start: { line: 1, column: 29 },
 | 
| +                                                end: { line: 1, column: 30 }
 | 
| +                                            }
 | 
| +                                        },
 | 
| +                                        range: [20, 30],
 | 
| +                                        loc: {
 | 
| +                                            start: { line: 1, column: 20 },
 | 
| +                                            end: { line: 1, column: 30 }
 | 
| +                                        }
 | 
| +                                    },
 | 
| +                                    range: [20, 31],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 20 },
 | 
| +                                        end: { line: 1, column: 31 }
 | 
| +                                    }
 | 
| +                                }],
 | 
| +                                range: [18, 32],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 18 },
 | 
| +                                    end: { line: 1, column: 32 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            rest: null,
 | 
| +                            generator: false,
 | 
| +                            expression: false,
 | 
| +                            range: [18, 32],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 18 },
 | 
| +                                end: { line: 1, column: 32 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'set',
 | 
| +                        range: [6, 32],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 32 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 34],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 34 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 34],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 34 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 34],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 34 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { set "null"(w) { m_null = w } }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Literal',
 | 
| +                            value: 'null',
 | 
| +                            raw: '"null"',
 | 
| +                            range: [10, 16],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 10 },
 | 
| +                                end: { line: 1, column: 16 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'FunctionExpression',
 | 
| +                            id: null,
 | 
| +                            params: [{
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'w',
 | 
| +                                range: [17, 18],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 17 },
 | 
| +                                    end: { line: 1, column: 18 }
 | 
| +                                }
 | 
| +                            }],
 | 
| +                            defaults: [],
 | 
| +                            body: {
 | 
| +                                type: 'BlockStatement',
 | 
| +                                body: [{
 | 
| +                                    type: 'ExpressionStatement',
 | 
| +                                    expression: {
 | 
| +                                        type: 'AssignmentExpression',
 | 
| +                                        operator: '=',
 | 
| +                                        left: {
 | 
| +                                            type: 'Identifier',
 | 
| +                                            name: 'm_null',
 | 
| +                                            range: [22, 28],
 | 
| +                                            loc: {
 | 
| +                                                start: { line: 1, column: 22 },
 | 
| +                                                end: { line: 1, column: 28 }
 | 
| +                                            }
 | 
| +                                        },
 | 
| +                                        right: {
 | 
| +                                            type: 'Identifier',
 | 
| +                                            name: 'w',
 | 
| +                                            range: [31, 32],
 | 
| +                                            loc: {
 | 
| +                                                start: { line: 1, column: 31 },
 | 
| +                                                end: { line: 1, column: 32 }
 | 
| +                                            }
 | 
| +                                        },
 | 
| +                                        range: [22, 32],
 | 
| +                                        loc: {
 | 
| +                                            start: { line: 1, column: 22 },
 | 
| +                                            end: { line: 1, column: 32 }
 | 
| +                                        }
 | 
| +                                    },
 | 
| +                                    range: [22, 33],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 22 },
 | 
| +                                        end: { line: 1, column: 33 }
 | 
| +                                    }
 | 
| +                                }],
 | 
| +                                range: [20, 34],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 20 },
 | 
| +                                    end: { line: 1, column: 34 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            rest: null,
 | 
| +                            generator: false,
 | 
| +                            expression: false,
 | 
| +                            range: [20, 34],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 20 },
 | 
| +                                end: { line: 1, column: 34 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'set',
 | 
| +                        range: [6, 34],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 34 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 36],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 36 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 36],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 36 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 36],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 36 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { set 10(w) { m_null = w } }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Literal',
 | 
| +                            value: 10,
 | 
| +                            raw: '10',
 | 
| +                            range: [10, 12],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 10 },
 | 
| +                                end: { line: 1, column: 12 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'FunctionExpression',
 | 
| +                            id: null,
 | 
| +                            params: [{
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'w',
 | 
| +                                range: [13, 14],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 13 },
 | 
| +                                    end: { line: 1, column: 14 }
 | 
| +                                }
 | 
| +                            }],
 | 
| +                            defaults: [],
 | 
| +                            body: {
 | 
| +                                type: 'BlockStatement',
 | 
| +                                body: [{
 | 
| +                                    type: 'ExpressionStatement',
 | 
| +                                    expression: {
 | 
| +                                        type: 'AssignmentExpression',
 | 
| +                                        operator: '=',
 | 
| +                                        left: {
 | 
| +                                            type: 'Identifier',
 | 
| +                                            name: 'm_null',
 | 
| +                                            range: [18, 24],
 | 
| +                                            loc: {
 | 
| +                                                start: { line: 1, column: 18 },
 | 
| +                                                end: { line: 1, column: 24 }
 | 
| +                                            }
 | 
| +                                        },
 | 
| +                                        right: {
 | 
| +                                            type: 'Identifier',
 | 
| +                                            name: 'w',
 | 
| +                                            range: [27, 28],
 | 
| +                                            loc: {
 | 
| +                                                start: { line: 1, column: 27 },
 | 
| +                                                end: { line: 1, column: 28 }
 | 
| +                                            }
 | 
| +                                        },
 | 
| +                                        range: [18, 28],
 | 
| +                                        loc: {
 | 
| +                                            start: { line: 1, column: 18 },
 | 
| +                                            end: { line: 1, column: 28 }
 | 
| +                                        }
 | 
| +                                    },
 | 
| +                                    range: [18, 29],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 18 },
 | 
| +                                        end: { line: 1, column: 29 }
 | 
| +                                    }
 | 
| +                                }],
 | 
| +                                range: [16, 30],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 16 },
 | 
| +                                    end: { line: 1, column: 30 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            rest: null,
 | 
| +                            generator: false,
 | 
| +                            expression: false,
 | 
| +                            range: [16, 30],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 16 },
 | 
| +                                end: { line: 1, column: 30 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'set',
 | 
| +                        range: [6, 30],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 30 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 32],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 32 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 32],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 32 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 32],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 32 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { get: 42 }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'get',
 | 
| +                            range: [6, 9],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 6 },
 | 
| +                                end: { line: 1, column: 9 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'Literal',
 | 
| +                            value: 42,
 | 
| +                            raw: '42',
 | 
| +                            range: [11, 13],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 11 },
 | 
| +                                end: { line: 1, column: 13 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'init',
 | 
| +                        range: [6, 13],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 13 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 15],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 15 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 15],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 15 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 15],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 15 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x = { set: 43 }': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'set',
 | 
| +                            range: [6, 9],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 6 },
 | 
| +                                end: { line: 1, column: 9 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'Literal',
 | 
| +                            value: 43,
 | 
| +                            raw: '43',
 | 
| +                            range: [11, 13],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 11 },
 | 
| +                                end: { line: 1, column: 13 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'init',
 | 
| +                        range: [6, 13],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 13 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [4, 15],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 15 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 15],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 15 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 15],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 15 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Comments': {
 | 
| +
 | 
| +        '/* block comment */ 42': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 42,
 | 
| +                raw: '42',
 | 
| +                range: [20, 22],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 20 },
 | 
| +                    end: { line: 1, column: 22 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [20, 22],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 20 },
 | 
| +                end: { line: 1, column: 22 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '42 /*The*/ /*Answer*/': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [0, 2],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 2 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 21],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 21 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 21],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 21 }
 | 
| +            },
 | 
| +            comments: [{
 | 
| +                type: 'Block',
 | 
| +                value: 'The',
 | 
| +                range: [3, 10],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 3 },
 | 
| +                    end: { line: 1, column: 10 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Block',
 | 
| +                value: 'Answer',
 | 
| +                range: [11, 21],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 11 },
 | 
| +                    end: { line: 1, column: 21 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '42 /*the*/ /*answer*/': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [0, 2]
 | 
| +                },
 | 
| +                range: [0, 21]
 | 
| +            }],
 | 
| +            range: [0, 21],
 | 
| +            comments: [{
 | 
| +                type: 'Block',
 | 
| +                value: 'the',
 | 
| +                range: [3, 10]
 | 
| +            }, {
 | 
| +                type: 'Block',
 | 
| +                value: 'answer',
 | 
| +                range: [11, 21]
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '/* multiline\ncomment\nshould\nbe\nignored */ 42': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 42,
 | 
| +                raw: '42',
 | 
| +                range: [42, 44],
 | 
| +                loc: {
 | 
| +                    start: { line: 5, column: 11 },
 | 
| +                    end: { line: 5, column: 13 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [42, 44],
 | 
| +            loc: {
 | 
| +                start: { line: 5, column: 11 },
 | 
| +                end: { line: 5, column: 13 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '/*a\r\nb*/ 42': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [9, 11],
 | 
| +                    loc: {
 | 
| +                        start: { line: 2, column: 4 },
 | 
| +                        end: { line: 2, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [9, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 2, column: 4 },
 | 
| +                    end: { line: 2, column: 6 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [9, 11],
 | 
| +            loc: {
 | 
| +                start: { line: 2, column: 4 },
 | 
| +                end: { line: 2, column: 6 }
 | 
| +            },
 | 
| +            comments: [{
 | 
| +                type: 'Block',
 | 
| +                value: 'a\r\nb',
 | 
| +                range: [0, 8],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 2, column: 3 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '/*a\rb*/ 42': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [8, 10],
 | 
| +                    loc: {
 | 
| +                        start: { line: 2, column: 4 },
 | 
| +                        end: { line: 2, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [8, 10],
 | 
| +                loc: {
 | 
| +                    start: { line: 2, column: 4 },
 | 
| +                    end: { line: 2, column: 6 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [8, 10],
 | 
| +            loc: {
 | 
| +                start: { line: 2, column: 4 },
 | 
| +                end: { line: 2, column: 6 }
 | 
| +            },
 | 
| +            comments: [{
 | 
| +                type: 'Block',
 | 
| +                value: 'a\rb',
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 2, column: 3 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '/*a\nb*/ 42': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [8, 10],
 | 
| +                    loc: {
 | 
| +                        start: { line: 2, column: 4 },
 | 
| +                        end: { line: 2, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [8, 10],
 | 
| +                loc: {
 | 
| +                    start: { line: 2, column: 4 },
 | 
| +                    end: { line: 2, column: 6 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [8, 10],
 | 
| +            loc: {
 | 
| +                start: { line: 2, column: 4 },
 | 
| +                end: { line: 2, column: 6 }
 | 
| +            },
 | 
| +            comments: [{
 | 
| +                type: 'Block',
 | 
| +                value: 'a\nb',
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 2, column: 3 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '/*a\nc*/ 42': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    loc: {
 | 
| +                        start: { line: 2, column: 4 },
 | 
| +                        end: { line: 2, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                loc: {
 | 
| +                    start: { line: 2, column: 4 },
 | 
| +                    end: { line: 2, column: 6 }
 | 
| +                }
 | 
| +            }],
 | 
| +            loc: {
 | 
| +                start: { line: 2, column: 4 },
 | 
| +                end: { line: 2, column: 6 }
 | 
| +            },
 | 
| +            comments: [{
 | 
| +                type: 'Block',
 | 
| +                value: 'a\nc',
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 2, column: 3 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '// line comment\n42': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 42,
 | 
| +                raw: '42',
 | 
| +                range: [16, 18],
 | 
| +                loc: {
 | 
| +                    start: { line: 2, column: 0 },
 | 
| +                    end: { line: 2, column: 2 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [16, 18],
 | 
| +            loc: {
 | 
| +                start: { line: 2, column: 0 },
 | 
| +                end: { line: 2, column: 2 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '42 // line comment': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [0, 2],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 2 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 18],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 18 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 18],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 18 }
 | 
| +            },
 | 
| +            comments: [{
 | 
| +                type: 'Line',
 | 
| +                value: ' line comment',
 | 
| +                range: [3, 18],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 3 },
 | 
| +                    end: { line: 1, column: 18 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '// Hello, world!\n42': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [17, 19],
 | 
| +                    loc: {
 | 
| +                        start: { line: 2, column: 0 },
 | 
| +                        end: { line: 2, column: 2 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [17, 19],
 | 
| +                loc: {
 | 
| +                    start: { line: 2, column: 0 },
 | 
| +                    end: { line: 2, column: 2 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [17, 19],
 | 
| +            loc: {
 | 
| +                start: { line: 2, column: 0 },
 | 
| +                end: { line: 2, column: 2 }
 | 
| +            },
 | 
| +            comments: [{
 | 
| +                type: 'Line',
 | 
| +                value: ' Hello, world!',
 | 
| +                range: [0, 16],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '// Hello, world!\n': {
 | 
| +            type: 'Program',
 | 
| +            body: [],
 | 
| +            range: [17, 17],
 | 
| +            loc: {
 | 
| +                start: { line: 2, column: 0 },
 | 
| +                end: { line: 2, column: 0 }
 | 
| +            },
 | 
| +            comments: [{
 | 
| +                type: 'Line',
 | 
| +                value: ' Hello, world!',
 | 
| +                range: [0, 16],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '// Hallo, world!\n': {
 | 
| +            type: 'Program',
 | 
| +            body: [],
 | 
| +            loc: {
 | 
| +                start: { line: 2, column: 0 },
 | 
| +                end: { line: 2, column: 0 }
 | 
| +            },
 | 
| +            comments: [{
 | 
| +                type: 'Line',
 | 
| +                value: ' Hallo, world!',
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '//\n42': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [3, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 2, column: 0 },
 | 
| +                        end: { line: 2, column: 2 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [3, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 2, column: 0 },
 | 
| +                    end: { line: 2, column: 2 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [3, 5],
 | 
| +            loc: {
 | 
| +                start: { line: 2, column: 0 },
 | 
| +                end: { line: 2, column: 2 }
 | 
| +            },
 | 
| +            comments: [{
 | 
| +                type: 'Line',
 | 
| +                value: '',
 | 
| +                range: [0, 2],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 2 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '//': {
 | 
| +            type: 'Program',
 | 
| +            body: [],
 | 
| +            range: [2, 2],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 2 },
 | 
| +                end: { line: 1, column: 2 }
 | 
| +            },
 | 
| +            comments: [{
 | 
| +                type: 'Line',
 | 
| +                value: '',
 | 
| +                range: [0, 2],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 2 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '// ': {
 | 
| +            type: 'Program',
 | 
| +            body: [],
 | 
| +            range: [3, 3],
 | 
| +            comments: [{
 | 
| +                type: 'Line',
 | 
| +                value: ' ',
 | 
| +                range: [0, 3]
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '/**/42': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [4, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [4, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [4, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 4 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            },
 | 
| +            comments: [{
 | 
| +                type: 'Block',
 | 
| +                value: '',
 | 
| +                range: [0, 4],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 4 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '// Hello, world!\n\n//   Another hello\n42': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [37, 39],
 | 
| +                    loc: {
 | 
| +                        start: { line: 4, column: 0 },
 | 
| +                        end: { line: 4, column: 2 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [37, 39],
 | 
| +                loc: {
 | 
| +                    start: { line: 4, column: 0 },
 | 
| +                    end: { line: 4, column: 2 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [37, 39],
 | 
| +            loc: {
 | 
| +                start: { line: 4, column: 0 },
 | 
| +                end: { line: 4, column: 2 }
 | 
| +            },
 | 
| +            comments: [{
 | 
| +                type: 'Line',
 | 
| +                value: ' Hello, world!',
 | 
| +                range: [0, 16],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Line',
 | 
| +                value: '   Another hello',
 | 
| +                range: [18, 36],
 | 
| +                loc: {
 | 
| +                    start: { line: 3, column: 0 },
 | 
| +                    end: { line: 3, column: 18 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        'if (x) { // Some comment\ndoThat(); }': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'IfStatement',
 | 
| +                test: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [4, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                consequent: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [{
 | 
| +                        type: 'ExpressionStatement',
 | 
| +                        expression: {
 | 
| +                            type: 'CallExpression',
 | 
| +                            callee: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'doThat',
 | 
| +                                range: [25, 31],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 2, column: 0 },
 | 
| +                                    end: { line: 2, column: 6 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            'arguments': [],
 | 
| +                            range: [25, 33],
 | 
| +                            loc: {
 | 
| +                                start: { line: 2, column: 0 },
 | 
| +                                end: { line: 2, column: 8 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        range: [25, 34],
 | 
| +                        loc: {
 | 
| +                            start: { line: 2, column: 0 },
 | 
| +                            end: { line: 2, column: 9 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [7, 36],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 7 },
 | 
| +                        end: { line: 2, column: 11 }
 | 
| +                    }
 | 
| +                },
 | 
| +                alternate: null,
 | 
| +                range: [0, 36],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 2, column: 11 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 36],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 2, column: 11 }
 | 
| +            },
 | 
| +            comments: [{
 | 
| +                type: 'Line',
 | 
| +                value: ' Some comment',
 | 
| +                range: [9, 24],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 9 },
 | 
| +                    end: { line: 1, column: 24 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        'switch (answer) { case 42: /* perfect */ bingo() }': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'SwitchStatement',
 | 
| +                discriminant: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'answer',
 | 
| +                    range: [8, 14],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 14 }
 | 
| +                    }
 | 
| +                },
 | 
| +                cases: [{
 | 
| +                    type: 'SwitchCase',
 | 
| +                    test: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 42,
 | 
| +                        raw: '42',
 | 
| +                        range: [23, 25],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 23 },
 | 
| +                            end: { line: 1, column: 25 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    consequent: [{
 | 
| +                        type: 'ExpressionStatement',
 | 
| +                        expression: {
 | 
| +                            type: 'CallExpression',
 | 
| +                            callee: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'bingo',
 | 
| +                                range: [41, 46],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 41 },
 | 
| +                                    end: { line: 1, column: 46 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            'arguments': [],
 | 
| +                            range: [41, 48],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 41 },
 | 
| +                                end: { line: 1, column: 48 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        range: [41, 49],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 41 },
 | 
| +                            end: { line: 1, column: 49 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [18, 49],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 18 },
 | 
| +                        end: { line: 1, column: 49 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [0, 50],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 50 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 50],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 50 }
 | 
| +            },
 | 
| +            comments: [{
 | 
| +                type: 'Block',
 | 
| +                value: ' perfect ',
 | 
| +                range: [27, 40],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 27 },
 | 
| +                    end: { line: 1, column: 40 }
 | 
| +                }
 | 
| +            }]
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Numeric Literals': {
 | 
| +
 | 
| +        '0': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 0,
 | 
| +                raw: '0',
 | 
| +                range: [0, 1],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 1 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 1],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 1 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '42': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 42,
 | 
| +                raw: '42',
 | 
| +                range: [0, 2],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 2 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 2],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 2 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '3': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 3,
 | 
| +                    raw: '3',
 | 
| +                    range: [0, 1]
 | 
| +                },
 | 
| +                range: [0, 1]
 | 
| +            }],
 | 
| +            range: [0, 1],
 | 
| +            tokens: [{
 | 
| +                type: 'Numeric',
 | 
| +                value: '3',
 | 
| +                range: [0, 1]
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '5': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 5,
 | 
| +                    raw: '5',
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 1 }
 | 
| +                }
 | 
| +            }],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 1 }
 | 
| +            },
 | 
| +            tokens: [{
 | 
| +                type: 'Numeric',
 | 
| +                value: '5',
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 1 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '.14': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 0.14,
 | 
| +                raw: '.14',
 | 
| +                range: [0, 3],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 3 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 3],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 3 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '3.14159': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 3.14159,
 | 
| +                raw: '3.14159',
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 7],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 7 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '6.02214179e+23': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 6.02214179e+23,
 | 
| +                raw: '6.02214179e+23',
 | 
| +                range: [0, 14],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 14 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 14],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 14 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '1.492417830e-10': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 1.49241783e-10,
 | 
| +                raw: '1.492417830e-10',
 | 
| +                range: [0, 15],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 15 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 15],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 15 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '0x0': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 0,
 | 
| +                raw: '0x0',
 | 
| +                range: [0, 3],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 3 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 3],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 3 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '0e+100': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 0,
 | 
| +                raw: '0e+100',
 | 
| +                range: [0, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '0xabc': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 0xabc,
 | 
| +                raw: '0xabc',
 | 
| +                range: [0, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 5],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 5 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '0xdef': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 0xdef,
 | 
| +                raw: '0xdef',
 | 
| +                range: [0, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 5],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 5 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '0X1A': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 0x1A,
 | 
| +                raw: '0X1A',
 | 
| +                range: [0, 4],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 4 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 4],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 4 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '0x10': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 0x10,
 | 
| +                raw: '0x10',
 | 
| +                range: [0, 4],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 4 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 4],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 4 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '0x100': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 0x100,
 | 
| +                raw: '0x100',
 | 
| +                range: [0, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 5],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 5 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '0X04': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 0X04,
 | 
| +                raw: '0X04',
 | 
| +                range: [0, 4],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 4 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 4],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 4 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '02': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 2,
 | 
| +                raw: '02',
 | 
| +                range: [0, 2],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 2 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 2],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 2 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '012': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 10,
 | 
| +                raw: '012',
 | 
| +                range: [0, 3],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 3 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 3],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 3 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '0012': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 10,
 | 
| +                raw: '0012',
 | 
| +                range: [0, 4],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 4 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 4],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 4 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'String Literals': {
 | 
| +
 | 
| +        '"Hello"': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 'Hello',
 | 
| +                raw: '"Hello"',
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 7],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 7 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '"\\n\\r\\t\\v\\b\\f\\\\\\\'\\"\\0"': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: '\n\r\t\x0B\b\f\\\'"\x00',
 | 
| +                raw: '"\\n\\r\\t\\v\\b\\f\\\\\\\'\\"\\0"',
 | 
| +                range: [0, 22],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 22 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 22],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 22 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '"\\u0061"': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 'a',
 | 
| +                raw: '"\\u0061"',
 | 
| +                range: [0, 8],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 8 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 8],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 8 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '"\\x61"': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 'a',
 | 
| +                raw: '"\\x61"',
 | 
| +                range: [0, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '"\\u00"': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 'u00',
 | 
| +                raw: '"\\u00"',
 | 
| +                range: [0, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '"\\xt"': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 'xt',
 | 
| +                raw: '"\\xt"',
 | 
| +                range: [0, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 5],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 5 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '"Hello\\nworld"': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 'Hello\nworld',
 | 
| +                raw: '"Hello\\nworld"',
 | 
| +                range: [0, 14],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 14 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 14],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 14 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '"Hello\\\nworld"': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 'Helloworld',
 | 
| +                raw: '"Hello\\\nworld"',
 | 
| +                range: [0, 14],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 2, column: 14 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 14],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 2, column: 14 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '"Hello\\02World"': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 'Hello\u0002World',
 | 
| +                raw: '"Hello\\02World"',
 | 
| +                range: [0, 15],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 15 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 15],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 15 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '"Hello\\012World"': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 'Hello\u000AWorld',
 | 
| +                raw: '"Hello\\012World"',
 | 
| +                range: [0, 16],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 16],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 16 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '"Hello\\122World"': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 'Hello\122World',
 | 
| +                raw: '"Hello\\122World"',
 | 
| +                range: [0, 16],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 16],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 16 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '"Hello\\0122World"': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 'Hello\u000A2World',
 | 
| +                raw: '"Hello\\0122World"',
 | 
| +                range: [0, 17],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 17 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 17],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 17 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '"Hello\\312World"': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 'Hello\u00CAWorld',
 | 
| +                raw: '"Hello\\312World"',
 | 
| +                range: [0, 16],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 16],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 16 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '"Hello\\412World"': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 'Hello\412World',
 | 
| +                raw: '"Hello\\412World"',
 | 
| +                range: [0, 16],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 16],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 16 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '"Hello\\812World"': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 'Hello812World',
 | 
| +                raw: '"Hello\\812World"',
 | 
| +                range: [0, 16],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 16],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 16 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '"Hello\\712World"': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 'Hello\712World',
 | 
| +                raw: '"Hello\\712World"',
 | 
| +                range: [0, 16],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 16],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 16 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '"Hello\\0World"': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 'Hello\u0000World',
 | 
| +                raw: '"Hello\\0World"',
 | 
| +                range: [0, 14],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 14 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 14],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 14 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '"Hello\\\r\nworld"': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 'Helloworld',
 | 
| +                raw: '"Hello\\\r\nworld"',
 | 
| +                range: [0, 15],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 2, column: 15 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 15],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 2, column: 15 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '"Hello\\1World"': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Literal',
 | 
| +                value: 'Hello\u0001World',
 | 
| +                raw: '"Hello\\1World"',
 | 
| +                range: [0, 14],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 14 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 14],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 14 }
 | 
| +            }
 | 
| +        }
 | 
| +    },
 | 
| +
 | 
| +    'Regular Expression Literals': {
 | 
| +
 | 
| +        'var x = /[a-z]/i': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: '/[a-z]/i',
 | 
| +                        raw: '/[a-z]/i',
 | 
| +                        range: [8, 16],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 16 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [4, 16],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 16 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'var',
 | 
| +                range: [0, 16],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 16],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 16 }
 | 
| +            },
 | 
| +            tokens: [{
 | 
| +                type: 'Keyword',
 | 
| +                value: 'var',
 | 
| +                range: [0, 3],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 3 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Identifier',
 | 
| +                value: 'x',
 | 
| +                range: [4, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Punctuator',
 | 
| +                value: '=',
 | 
| +                range: [6, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 6 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'RegularExpression',
 | 
| +                value: '/[a-z]/i',
 | 
| +                range: [8, 16],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 8 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        'var x = /[x-z]/i': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [4, 5]
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: '/[x-z]/i',
 | 
| +                        raw: '/[x-z]/i',
 | 
| +                        range: [8, 16]
 | 
| +                    },
 | 
| +                    range: [4, 16]
 | 
| +                }],
 | 
| +                kind: 'var',
 | 
| +                range: [0, 16]
 | 
| +            }],
 | 
| +            range: [0, 16],
 | 
| +            tokens: [{
 | 
| +                type: 'Keyword',
 | 
| +                value: 'var',
 | 
| +                range: [0, 3]
 | 
| +            }, {
 | 
| +                type: 'Identifier',
 | 
| +                value: 'x',
 | 
| +                range: [4, 5]
 | 
| +            }, {
 | 
| +                type: 'Punctuator',
 | 
| +                value: '=',
 | 
| +                range: [6, 7]
 | 
| +            }, {
 | 
| +                type: 'RegularExpression',
 | 
| +                value: '/[x-z]/i',
 | 
| +                range: [8, 16]
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        'var x = /[a-c]/i': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: '/[a-c]/i',
 | 
| +                        raw: '/[a-c]/i',
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 16 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 16 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'var',
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            }],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 16 }
 | 
| +            },
 | 
| +            tokens: [{
 | 
| +                type: 'Keyword',
 | 
| +                value: 'var',
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 3 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Identifier',
 | 
| +                value: 'x',
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Punctuator',
 | 
| +                value: '=',
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 6 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'RegularExpression',
 | 
| +                value: '/[a-c]/i',
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 8 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        'var x = /[P QR]/i': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: '/[P QR]/i',
 | 
| +                        raw: '/[P QR]/i',
 | 
| +                        range: [8, 17],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 17 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [4, 17],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 17 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'var',
 | 
| +                range: [0, 17],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 17 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 17],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 17 }
 | 
| +            },
 | 
| +            tokens: [{
 | 
| +                type: 'Keyword',
 | 
| +                value: 'var',
 | 
| +                range: [0, 3],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 3 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Identifier',
 | 
| +                value: 'x',
 | 
| +                range: [4, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Punctuator',
 | 
| +                value: '=',
 | 
| +                range: [6, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 6 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'RegularExpression',
 | 
| +                value: '/[P QR]/i',
 | 
| +                range: [8, 17],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 8 },
 | 
| +                    end: { line: 1, column: 17 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        'var x = /[\\]/]/': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: new RegExp('[\\]/]').toString(),
 | 
| +                        raw: '/[\\]/]/',
 | 
| +                        range: [8, 15],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 15 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [4, 15],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 15 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'var',
 | 
| +                range: [0, 15],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 15 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 15],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 15 }
 | 
| +            },
 | 
| +            tokens: [{
 | 
| +                type: 'Keyword',
 | 
| +                value: 'var',
 | 
| +                range: [0, 3],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 3 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Identifier',
 | 
| +                value: 'x',
 | 
| +                range: [4, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Punctuator',
 | 
| +                value: '=',
 | 
| +                range: [6, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 6 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'RegularExpression',
 | 
| +                value: '/[\\]/]/',
 | 
| +                range: [8, 15],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 8 },
 | 
| +                    end: { line: 1, column: 15 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        'var x = /foo\\/bar/': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: '/foo\\/bar/',
 | 
| +                        raw: '/foo\\/bar/',
 | 
| +                        range: [8, 18],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 18 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [4, 18],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 18 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'var',
 | 
| +                range: [0, 18],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 18 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 18],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 18 }
 | 
| +            },
 | 
| +            tokens: [{
 | 
| +                type: 'Keyword',
 | 
| +                value: 'var',
 | 
| +                range: [0, 3],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 3 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Identifier',
 | 
| +                value: 'x',
 | 
| +                range: [4, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Punctuator',
 | 
| +                value: '=',
 | 
| +                range: [6, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 6 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'RegularExpression',
 | 
| +                value: '/foo\\/bar/',
 | 
| +                range: [8, 18],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 8 },
 | 
| +                    end: { line: 1, column: 18 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        'var x = /=([^=\\s])+/g': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: '/=([^=\\s])+/g',
 | 
| +                        raw: '/=([^=\\s])+/g',
 | 
| +                        range: [8, 21],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 21 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [4, 21],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 21 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'var',
 | 
| +                range: [0, 21],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 21 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 21],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 21 }
 | 
| +            },
 | 
| +            tokens: [{
 | 
| +                type: 'Keyword',
 | 
| +                value: 'var',
 | 
| +                range: [0, 3],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 3 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Identifier',
 | 
| +                value: 'x',
 | 
| +                range: [4, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Punctuator',
 | 
| +                value: '=',
 | 
| +                range: [6, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 6 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'RegularExpression',
 | 
| +                value: '/=([^=\\s])+/g',
 | 
| +                range: [8, 21],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 8 },
 | 
| +                    end: { line: 1, column: 21 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        'var x = /[P QR]/\\u0067': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: '/[P QR]/g',
 | 
| +                        raw: '/[P QR]/\\u0067',
 | 
| +                        range: [8, 22],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 22 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [4, 22],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 22 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'var',
 | 
| +                range: [0, 22],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 22 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 22],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 22 }
 | 
| +            },
 | 
| +            tokens: [{
 | 
| +                type: 'Keyword',
 | 
| +                value: 'var',
 | 
| +                range: [0, 3],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 3 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Identifier',
 | 
| +                value: 'x',
 | 
| +                range: [4, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Punctuator',
 | 
| +                value: '=',
 | 
| +                range: [6, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 6 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'RegularExpression',
 | 
| +                value: '/[P QR]/\\u0067',
 | 
| +                range: [8, 22],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 8 },
 | 
| +                    end: { line: 1, column: 22 }
 | 
| +                }
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        'var x = /[P QR]/\\g': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: '/[P QR]/g',
 | 
| +                        raw: '/[P QR]/\\g',
 | 
| +                        range: [8, 18],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 18 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [4, 18],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 18 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'var',
 | 
| +                range: [0, 18],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 18 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 18],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 18 }
 | 
| +            },
 | 
| +            tokens: [{
 | 
| +                type: 'Keyword',
 | 
| +                value: 'var',
 | 
| +                range: [0, 3],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 3 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Identifier',
 | 
| +                value: 'x',
 | 
| +                range: [4, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Punctuator',
 | 
| +                value: '=',
 | 
| +                range: [6, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 6 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'RegularExpression',
 | 
| +                value: '/[P QR]/\\g',
 | 
| +                range: [8, 18],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 8 },
 | 
| +                    end: { line: 1, column: 18 }
 | 
| +                }
 | 
| +            }]
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Left-Hand-Side Expression': {
 | 
| +
 | 
| +        'new Button': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'NewExpression',
 | 
| +                callee: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'Button',
 | 
| +                    range: [4, 10],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 10 }
 | 
| +                    }
 | 
| +                },
 | 
| +                'arguments': [],
 | 
| +                range: [0, 10],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 10 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 10],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 10 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'new Button()': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'NewExpression',
 | 
| +                callee: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'Button',
 | 
| +                    range: [4, 10],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 10 }
 | 
| +                    }
 | 
| +                },
 | 
| +                'arguments': [],
 | 
| +                range: [0, 12],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 12 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 12],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 12 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'new new foo': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'NewExpression',
 | 
| +                callee: {
 | 
| +                    type: 'NewExpression',
 | 
| +                    callee: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'foo',
 | 
| +                        range: [8, 11],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 11 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    'arguments': [],
 | 
| +                    range: [4, 11],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 11 }
 | 
| +                    }
 | 
| +                },
 | 
| +                'arguments': [],
 | 
| +                range: [0, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 11],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 11 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'new new foo()': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'NewExpression',
 | 
| +                callee: {
 | 
| +                    type: 'NewExpression',
 | 
| +                    callee: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'foo',
 | 
| +                        range: [8, 11],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 11 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    'arguments': [],
 | 
| +                    range: [4, 13],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 13 }
 | 
| +                    }
 | 
| +                },
 | 
| +                'arguments': [],
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 13],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 13 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'new foo().bar()': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'CallExpression',
 | 
| +                callee: {
 | 
| +                    type: 'MemberExpression',
 | 
| +                    computed: false,
 | 
| +                    object: {
 | 
| +                        type: 'NewExpression',
 | 
| +                        callee: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'foo',
 | 
| +                            range: [4, 7],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 4 },
 | 
| +                                end: { line: 1, column: 7 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        'arguments': [],
 | 
| +                        range: [0, 9],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 9 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    property: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'bar',
 | 
| +                        range: [10, 13],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 10 },
 | 
| +                            end: { line: 1, column: 13 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 13],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 13 }
 | 
| +                    }
 | 
| +                },
 | 
| +                'arguments': [],
 | 
| +                range: [0, 15],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 15 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 15],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 15 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'new foo[bar]': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'NewExpression',
 | 
| +                callee: {
 | 
| +                    type: 'MemberExpression',
 | 
| +                    computed: true,
 | 
| +                    object: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'foo',
 | 
| +                        range: [4, 7],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 7 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    property: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'bar',
 | 
| +                        range: [8, 11],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 11 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [4, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                'arguments': [],
 | 
| +                range: [0, 12],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 12 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 12],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 12 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'new foo.bar()': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'NewExpression',
 | 
| +                callee: {
 | 
| +                    type: 'MemberExpression',
 | 
| +                    computed: false,
 | 
| +                    object: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'foo',
 | 
| +                        range: [4, 7],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 7 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    property: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'bar',
 | 
| +                        range: [8, 11],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 11 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [4, 11],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 11 }
 | 
| +                    }
 | 
| +                },
 | 
| +                'arguments': [],
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 13],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 13 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '( new foo).bar()': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'CallExpression',
 | 
| +                callee: {
 | 
| +                    type: 'MemberExpression',
 | 
| +                    computed: false,
 | 
| +                    object: {
 | 
| +                        type: 'NewExpression',
 | 
| +                        callee: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'foo',
 | 
| +                            range: [6, 9],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 6 },
 | 
| +                                end: { line: 1, column: 9 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        'arguments': [],
 | 
| +                        range: [2, 9],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 2 },
 | 
| +                            end: { line: 1, column: 9 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    property: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'bar',
 | 
| +                        range: [11, 14],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 11 },
 | 
| +                            end: { line: 1, column: 14 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 14],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 14 }
 | 
| +                    }
 | 
| +                },
 | 
| +                'arguments': [],
 | 
| +                range: [0, 16],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 16],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 16 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'foo(bar, baz)': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'CallExpression',
 | 
| +                callee: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'foo',
 | 
| +                    range: [0, 3],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 3 }
 | 
| +                    }
 | 
| +                },
 | 
| +                'arguments': [{
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'bar',
 | 
| +                    range: [4, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 7 }
 | 
| +                    }
 | 
| +                }, {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'baz',
 | 
| +                    range: [9, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 9 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 13],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 13 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '(    foo  )()': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'CallExpression',
 | 
| +                callee: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'foo',
 | 
| +                    range: [5, 8],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 8 }
 | 
| +                    }
 | 
| +                },
 | 
| +                'arguments': [],
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 13],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 13 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'universe.milkyway': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'MemberExpression',
 | 
| +                computed: false,
 | 
| +                object: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'universe',
 | 
| +                    range: [0, 8],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 8 }
 | 
| +                    }
 | 
| +                },
 | 
| +                property: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'milkyway',
 | 
| +                    range: [9, 17],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 9 },
 | 
| +                        end: { line: 1, column: 17 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 17],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 17 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 17],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 17 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'universe.milkyway.solarsystem': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'MemberExpression',
 | 
| +                computed: false,
 | 
| +                object: {
 | 
| +                    type: 'MemberExpression',
 | 
| +                    computed: false,
 | 
| +                    object: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'universe',
 | 
| +                        range: [0, 8],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 8 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    property: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'milkyway',
 | 
| +                        range: [9, 17],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 9 },
 | 
| +                            end: { line: 1, column: 17 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 17],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 17 }
 | 
| +                    }
 | 
| +                },
 | 
| +                property: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'solarsystem',
 | 
| +                    range: [18, 29],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 18 },
 | 
| +                        end: { line: 1, column: 29 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 29],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 29 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 29],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 29 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'universe.milkyway.solarsystem.Earth': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'MemberExpression',
 | 
| +                computed: false,
 | 
| +                object: {
 | 
| +                    type: 'MemberExpression',
 | 
| +                    computed: false,
 | 
| +                    object: {
 | 
| +                        type: 'MemberExpression',
 | 
| +                        computed: false,
 | 
| +                        object: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'universe',
 | 
| +                            range: [0, 8],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 0 },
 | 
| +                                end: { line: 1, column: 8 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        property: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'milkyway',
 | 
| +                            range: [9, 17],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 9 },
 | 
| +                                end: { line: 1, column: 17 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        range: [0, 17],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 17 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    property: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'solarsystem',
 | 
| +                        range: [18, 29],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 18 },
 | 
| +                            end: { line: 1, column: 29 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 29],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 29 }
 | 
| +                    }
 | 
| +                },
 | 
| +                property: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'Earth',
 | 
| +                    range: [30, 35],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 30 },
 | 
| +                        end: { line: 1, column: 35 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 35],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 35 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 35],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 35 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'universe[galaxyName, otherUselessName]': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'MemberExpression',
 | 
| +                computed: true,
 | 
| +                object: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'universe',
 | 
| +                    range: [0, 8],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 8 }
 | 
| +                    }
 | 
| +                },
 | 
| +                property: {
 | 
| +                    type: 'SequenceExpression',
 | 
| +                    expressions: [{
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'galaxyName',
 | 
| +                        range: [9, 19],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 9 },
 | 
| +                            end: { line: 1, column: 19 }
 | 
| +                        }
 | 
| +                    }, {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'otherUselessName',
 | 
| +                        range: [21, 37],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 21 },
 | 
| +                            end: { line: 1, column: 37 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [9, 37],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 9 },
 | 
| +                        end: { line: 1, column: 37 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 38],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 38 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 38],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 38 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'universe[galaxyName]': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'MemberExpression',
 | 
| +                computed: true,
 | 
| +                object: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'universe',
 | 
| +                    range: [0, 8],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 8 }
 | 
| +                    }
 | 
| +                },
 | 
| +                property: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'galaxyName',
 | 
| +                    range: [9, 19],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 9 },
 | 
| +                        end: { line: 1, column: 19 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 20],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 20 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 20],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 20 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'universe[42].galaxies': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'MemberExpression',
 | 
| +                computed: false,
 | 
| +                object: {
 | 
| +                    type: 'MemberExpression',
 | 
| +                    computed: true,
 | 
| +                    object: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'universe',
 | 
| +                        range: [0, 8],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 8 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    property: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 42,
 | 
| +                        raw: '42',
 | 
| +                        range: [9, 11],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 9 },
 | 
| +                            end: { line: 1, column: 11 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                property: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'galaxies',
 | 
| +                    range: [13, 21],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 13 },
 | 
| +                        end: { line: 1, column: 21 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 21],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 21 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 21],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 21 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'universe(42).galaxies': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'MemberExpression',
 | 
| +                computed: false,
 | 
| +                object: {
 | 
| +                    type: 'CallExpression',
 | 
| +                    callee: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'universe',
 | 
| +                        range: [0, 8],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 8 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    'arguments': [{
 | 
| +                        type: 'Literal',
 | 
| +                        value: 42,
 | 
| +                        raw: '42',
 | 
| +                        range: [9, 11],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 9 },
 | 
| +                            end: { line: 1, column: 11 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                property: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'galaxies',
 | 
| +                    range: [13, 21],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 13 },
 | 
| +                        end: { line: 1, column: 21 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 21],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 21 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 21],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 21 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'universe(42).galaxies(14, 3, 77).milkyway': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'MemberExpression',
 | 
| +                computed: false,
 | 
| +                object: {
 | 
| +                    type: 'CallExpression',
 | 
| +                    callee: {
 | 
| +                        type: 'MemberExpression',
 | 
| +                        computed: false,
 | 
| +                        object: {
 | 
| +                            type: 'CallExpression',
 | 
| +                            callee: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'universe',
 | 
| +                                range: [0, 8],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 0 },
 | 
| +                                    end: { line: 1, column: 8 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            'arguments': [{
 | 
| +                                type: 'Literal',
 | 
| +                                value: 42,
 | 
| +                                raw: '42',
 | 
| +                                range: [9, 11],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 9 },
 | 
| +                                    end: { line: 1, column: 11 }
 | 
| +                                }
 | 
| +                            }],
 | 
| +                            range: [0, 12],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 0 },
 | 
| +                                end: { line: 1, column: 12 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        property: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'galaxies',
 | 
| +                            range: [13, 21],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 13 },
 | 
| +                                end: { line: 1, column: 21 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        range: [0, 21],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 21 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    'arguments': [{
 | 
| +                        type: 'Literal',
 | 
| +                        value: 14,
 | 
| +                        raw: '14',
 | 
| +                        range: [22, 24],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 22 },
 | 
| +                            end: { line: 1, column: 24 }
 | 
| +                        }
 | 
| +                    }, {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 3,
 | 
| +                        raw: '3',
 | 
| +                        range: [26, 27],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 26 },
 | 
| +                            end: { line: 1, column: 27 }
 | 
| +                        }
 | 
| +                    }, {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 77,
 | 
| +                        raw: '77',
 | 
| +                        range: [29, 31],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 29 },
 | 
| +                            end: { line: 1, column: 31 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [0, 32],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 32 }
 | 
| +                    }
 | 
| +                },
 | 
| +                property: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'milkyway',
 | 
| +                    range: [33, 41],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 33 },
 | 
| +                        end: { line: 1, column: 41 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 41],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 41 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 41],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 41 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'earth.asia.Indonesia.prepareForElection(2014)': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'CallExpression',
 | 
| +                callee: {
 | 
| +                    type: 'MemberExpression',
 | 
| +                    computed: false,
 | 
| +                    object: {
 | 
| +                        type: 'MemberExpression',
 | 
| +                        computed: false,
 | 
| +                        object: {
 | 
| +                            type: 'MemberExpression',
 | 
| +                            computed: false,
 | 
| +                            object: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'earth',
 | 
| +                                range: [0, 5],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 0 },
 | 
| +                                    end: { line: 1, column: 5 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            property: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'asia',
 | 
| +                                range: [6, 10],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 6 },
 | 
| +                                    end: { line: 1, column: 10 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            range: [0, 10],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 0 },
 | 
| +                                end: { line: 1, column: 10 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        property: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'Indonesia',
 | 
| +                            range: [11, 20],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 11 },
 | 
| +                                end: { line: 1, column: 20 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        range: [0, 20],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 20 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    property: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'prepareForElection',
 | 
| +                        range: [21, 39],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 21 },
 | 
| +                            end: { line: 1, column: 39 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 39],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 39 }
 | 
| +                    }
 | 
| +                },
 | 
| +                'arguments': [{
 | 
| +                    type: 'Literal',
 | 
| +                    value: 2014,
 | 
| +                    raw: '2014',
 | 
| +                    range: [40, 44],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 40 },
 | 
| +                        end: { line: 1, column: 44 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [0, 45],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 45 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 45],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 45 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'universe.if': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'MemberExpression',
 | 
| +                computed: false,
 | 
| +                object: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'universe',
 | 
| +                    range: [0, 8],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 8 }
 | 
| +                    }
 | 
| +                },
 | 
| +                property: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'if',
 | 
| +                    range: [9, 11],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 9 },
 | 
| +                        end: { line: 1, column: 11 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 11],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 11 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'universe.true': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'MemberExpression',
 | 
| +                computed: false,
 | 
| +                object: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'universe',
 | 
| +                    range: [0, 8],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 8 }
 | 
| +                    }
 | 
| +                },
 | 
| +                property: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'true',
 | 
| +                    range: [9, 13],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 9 },
 | 
| +                        end: { line: 1, column: 13 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 13],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 13 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'universe.false': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'MemberExpression',
 | 
| +                computed: false,
 | 
| +                object: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'universe',
 | 
| +                    range: [0, 8],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 8 }
 | 
| +                    }
 | 
| +                },
 | 
| +                property: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'false',
 | 
| +                    range: [9, 14],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 9 },
 | 
| +                        end: { line: 1, column: 14 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 14],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 14 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 14],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 14 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'universe.null': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'MemberExpression',
 | 
| +                computed: false,
 | 
| +                object: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'universe',
 | 
| +                    range: [0, 8],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 8 }
 | 
| +                    }
 | 
| +                },
 | 
| +                property: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'null',
 | 
| +                    range: [9, 13],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 9 },
 | 
| +                        end: { line: 1, column: 13 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 13],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 13 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Postfix Expressions': {
 | 
| +
 | 
| +        'x++': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'UpdateExpression',
 | 
| +                operator: '++',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                prefix: false,
 | 
| +                range: [0, 3],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 3 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 3],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 3 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x--': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'UpdateExpression',
 | 
| +                operator: '--',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                prefix: false,
 | 
| +                range: [0, 3],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 3 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 3],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 3 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'eval++': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'UpdateExpression',
 | 
| +                operator: '++',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'eval',
 | 
| +                    range: [0, 4],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 4 }
 | 
| +                    }
 | 
| +                },
 | 
| +                prefix: false,
 | 
| +                range: [0, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'eval--': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'UpdateExpression',
 | 
| +                operator: '--',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'eval',
 | 
| +                    range: [0, 4],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 4 }
 | 
| +                    }
 | 
| +                },
 | 
| +                prefix: false,
 | 
| +                range: [0, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'arguments++': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'UpdateExpression',
 | 
| +                operator: '++',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'arguments',
 | 
| +                    range: [0, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                prefix: false,
 | 
| +                range: [0, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 11],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 11 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'arguments--': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'UpdateExpression',
 | 
| +                operator: '--',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'arguments',
 | 
| +                    range: [0, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                prefix: false,
 | 
| +                range: [0, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 11],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 11 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Unary Operators': {
 | 
| +
 | 
| +        '++x': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'UpdateExpression',
 | 
| +                operator: '++',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [2, 3],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 2 },
 | 
| +                        end: { line: 1, column: 3 }
 | 
| +                    }
 | 
| +                },
 | 
| +                prefix: true,
 | 
| +                range: [0, 3],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 3 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 3],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 3 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '--x': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'UpdateExpression',
 | 
| +                operator: '--',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [2, 3],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 2 },
 | 
| +                        end: { line: 1, column: 3 }
 | 
| +                    }
 | 
| +                },
 | 
| +                prefix: true,
 | 
| +                range: [0, 3],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 3 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 3],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 3 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '++eval': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'UpdateExpression',
 | 
| +                operator: '++',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'eval',
 | 
| +                    range: [2, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 2 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                prefix: true,
 | 
| +                range: [0, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '--eval': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'UpdateExpression',
 | 
| +                operator: '--',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'eval',
 | 
| +                    range: [2, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 2 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                prefix: true,
 | 
| +                range: [0, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '++arguments': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'UpdateExpression',
 | 
| +                operator: '++',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'arguments',
 | 
| +                    range: [2, 11],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 2 },
 | 
| +                        end: { line: 1, column: 11 }
 | 
| +                    }
 | 
| +                },
 | 
| +                prefix: true,
 | 
| +                range: [0, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 11],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 11 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '--arguments': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'UpdateExpression',
 | 
| +                operator: '--',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'arguments',
 | 
| +                    range: [2, 11],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 2 },
 | 
| +                        end: { line: 1, column: 11 }
 | 
| +                    }
 | 
| +                },
 | 
| +                prefix: true,
 | 
| +                range: [0, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 11],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 11 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '+x': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'UnaryExpression',
 | 
| +                operator: '+',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [1, 2],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 1 },
 | 
| +                        end: { line: 1, column: 2 }
 | 
| +                    }
 | 
| +                },
 | 
| +                prefix: true,
 | 
| +                range: [0, 2],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 2 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 2],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 2 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '-x': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'UnaryExpression',
 | 
| +                operator: '-',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [1, 2],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 1 },
 | 
| +                        end: { line: 1, column: 2 }
 | 
| +                    }
 | 
| +                },
 | 
| +                prefix: true,
 | 
| +                range: [0, 2],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 2 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 2],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 2 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '~x': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'UnaryExpression',
 | 
| +                operator: '~',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [1, 2],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 1 },
 | 
| +                        end: { line: 1, column: 2 }
 | 
| +                    }
 | 
| +                },
 | 
| +                prefix: true,
 | 
| +                range: [0, 2],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 2 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 2],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 2 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '!x': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'UnaryExpression',
 | 
| +                operator: '!',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [1, 2],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 1 },
 | 
| +                        end: { line: 1, column: 2 }
 | 
| +                    }
 | 
| +                },
 | 
| +                prefix: true,
 | 
| +                range: [0, 2],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 2 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 2],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 2 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'void x': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'UnaryExpression',
 | 
| +                operator: 'void',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [5, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                prefix: true,
 | 
| +                range: [0, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'delete x': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'UnaryExpression',
 | 
| +                operator: 'delete',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [7, 8],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 7 },
 | 
| +                        end: { line: 1, column: 8 }
 | 
| +                    }
 | 
| +                },
 | 
| +                prefix: true,
 | 
| +                range: [0, 8],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 8 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 8],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 8 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'typeof x': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'UnaryExpression',
 | 
| +                operator: 'typeof',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [7, 8],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 7 },
 | 
| +                        end: { line: 1, column: 8 }
 | 
| +                    }
 | 
| +                },
 | 
| +                prefix: true,
 | 
| +                range: [0, 8],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 8 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 8],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 8 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Multiplicative Operators': {
 | 
| +
 | 
| +        'x * y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '*',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [4, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 5],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 5 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x / y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '/',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [4, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 5],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 5 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x % y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '%',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [4, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 5],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 5 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Additive Operators': {
 | 
| +
 | 
| +        'x + y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '+',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [4, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 5],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 5 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x - y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '-',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [4, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 5],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 5 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Bitwise Shift Operator': {
 | 
| +
 | 
| +        'x << y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '<<',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [5, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x >> y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '>>',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [5, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x >>> y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '>>>',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [6, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 6 },
 | 
| +                        end: { line: 1, column: 7 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 7],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 7 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Relational Operators': {
 | 
| +
 | 
| +        'x < y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '<',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [4, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 5],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 5 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x > y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '>',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [4, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 5],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 5 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x <= y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '<=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [5, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x >= y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '>=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [5, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x in y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: 'in',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [5, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x instanceof y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: 'instanceof',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [13, 14],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 13 },
 | 
| +                        end: { line: 1, column: 14 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 14],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 14 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 14],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 14 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x < y < z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '<',
 | 
| +                left: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '<',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [0, 1],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 1 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'z',
 | 
| +                    range: [8, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Equality Operators': {
 | 
| +
 | 
| +        'x == y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '==',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [5, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x != y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '!=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [5, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x === y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '===',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [6, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 6 },
 | 
| +                        end: { line: 1, column: 7 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 7],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 7 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x !== y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '!==',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [6, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 6 },
 | 
| +                        end: { line: 1, column: 7 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 7],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 7 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Binary Bitwise Operators': {
 | 
| +
 | 
| +        'x & y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '&',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [4, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 5],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 5 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x ^ y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '^',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [4, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 5],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 5 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x | y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '|',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [4, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 5],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 5 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Binary Expressions': {
 | 
| +
 | 
| +        'x + y + z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '+',
 | 
| +                left: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '+',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [0, 1],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 1 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'z',
 | 
| +                    range: [8, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x - y + z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '+',
 | 
| +                left: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '-',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [0, 1],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 1 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'z',
 | 
| +                    range: [8, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x + y - z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '-',
 | 
| +                left: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '+',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [0, 1],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 1 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'z',
 | 
| +                    range: [8, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x - y - z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '-',
 | 
| +                left: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '-',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [0, 1],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 1 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'z',
 | 
| +                    range: [8, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x + y * z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '+',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '*',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'z',
 | 
| +                        range: [8, 9],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 9 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [4, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x + y / z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '+',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '/',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'z',
 | 
| +                        range: [8, 9],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 9 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [4, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x - y % z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '-',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '%',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'z',
 | 
| +                        range: [8, 9],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 9 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [4, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x * y * z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '*',
 | 
| +                left: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '*',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [0, 1],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 1 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'z',
 | 
| +                    range: [8, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x * y / z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '/',
 | 
| +                left: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '*',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [0, 1],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 1 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'z',
 | 
| +                    range: [8, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x * y % z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '%',
 | 
| +                left: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '*',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [0, 1],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 1 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'z',
 | 
| +                    range: [8, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x % y * z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '*',
 | 
| +                left: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '%',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [0, 1],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 1 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'z',
 | 
| +                    range: [8, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x << y << z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '<<',
 | 
| +                left: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '<<',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [0, 1],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 1 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [5, 6],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 5 },
 | 
| +                            end: { line: 1, column: 6 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'z',
 | 
| +                    range: [10, 11],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 10 },
 | 
| +                        end: { line: 1, column: 11 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 11],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 11 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x | y | z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '|',
 | 
| +                left: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '|',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [0, 1],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 1 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'z',
 | 
| +                    range: [8, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x & y & z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '&',
 | 
| +                left: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '&',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [0, 1],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 1 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'z',
 | 
| +                    range: [8, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x ^ y ^ z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '^',
 | 
| +                left: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '^',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [0, 1],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 1 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'z',
 | 
| +                    range: [8, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x & y | z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '|',
 | 
| +                left: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '&',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [0, 1],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 1 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'z',
 | 
| +                    range: [8, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x | y ^ z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '|',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '^',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'z',
 | 
| +                        range: [8, 9],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 9 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [4, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x | y & z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '|',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '&',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'z',
 | 
| +                        range: [8, 9],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 9 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [4, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Binary Logical Operators': {
 | 
| +
 | 
| +        'x || y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'LogicalExpression',
 | 
| +                operator: '||',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [5, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x && y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'LogicalExpression',
 | 
| +                operator: '&&',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [5, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x || y || z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'LogicalExpression',
 | 
| +                operator: '||',
 | 
| +                left: {
 | 
| +                    type: 'LogicalExpression',
 | 
| +                    operator: '||',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [0, 1],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 1 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [5, 6],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 5 },
 | 
| +                            end: { line: 1, column: 6 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'z',
 | 
| +                    range: [10, 11],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 10 },
 | 
| +                        end: { line: 1, column: 11 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 11],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 11 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x && y && z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'LogicalExpression',
 | 
| +                operator: '&&',
 | 
| +                left: {
 | 
| +                    type: 'LogicalExpression',
 | 
| +                    operator: '&&',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [0, 1],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 1 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [5, 6],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 5 },
 | 
| +                            end: { line: 1, column: 6 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'z',
 | 
| +                    range: [10, 11],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 10 },
 | 
| +                        end: { line: 1, column: 11 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 11],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 11 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x || y && z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'LogicalExpression',
 | 
| +                operator: '||',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'LogicalExpression',
 | 
| +                    operator: '&&',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [5, 6],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 5 },
 | 
| +                            end: { line: 1, column: 6 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'z',
 | 
| +                        range: [10, 11],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 10 },
 | 
| +                            end: { line: 1, column: 11 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [5, 11],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 11 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 11],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 11 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x || y ^ z': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'LogicalExpression',
 | 
| +                operator: '||',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'BinaryExpression',
 | 
| +                    operator: '^',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [5, 6],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 5 },
 | 
| +                            end: { line: 1, column: 6 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'z',
 | 
| +                        range: [9, 10],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 9 },
 | 
| +                            end: { line: 1, column: 10 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [5, 10],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 10 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 10],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 10 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 10],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 10 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Conditional Operator': {
 | 
| +
 | 
| +        'y ? 1 : 2': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'ConditionalExpression',
 | 
| +                test: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                consequent: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 1,
 | 
| +                    raw: '1',
 | 
| +                    range: [4, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                alternate: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 2,
 | 
| +                    raw: '2',
 | 
| +                    range: [8, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x && y ? 1 : 2': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'ConditionalExpression',
 | 
| +                test: {
 | 
| +                    type: 'LogicalExpression',
 | 
| +                    operator: '&&',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [0, 1],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 1 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [5, 6],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 5 },
 | 
| +                            end: { line: 1, column: 6 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                consequent: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 1,
 | 
| +                    raw: '1',
 | 
| +                    range: [9, 10],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 9 },
 | 
| +                        end: { line: 1, column: 10 }
 | 
| +                    }
 | 
| +                },
 | 
| +                alternate: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 2,
 | 
| +                    raw: '2',
 | 
| +                    range: [13, 14],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 13 },
 | 
| +                        end: { line: 1, column: 14 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 14],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 14 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 14],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 14 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Assignment Operators': {
 | 
| +
 | 
| +        'x = 42': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [4, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'eval = 42': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'eval',
 | 
| +                    range: [0, 4],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 4 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [7, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 7 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'arguments = 42': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'arguments',
 | 
| +                    range: [0, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [12, 14],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 12 },
 | 
| +                        end: { line: 1, column: 14 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 14],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 14 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 14],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 14 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x *= 42': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '*=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [5, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 7 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 7],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 7 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x /= 42': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '/=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [5, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 7 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 7],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 7 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x %= 42': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '%=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [5, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 7 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 7],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 7 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x += 42': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '+=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [5, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 7 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 7],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 7 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x -= 42': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '-=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [5, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 7 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 7],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 7 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x <<= 42': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '<<=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [6, 8],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 6 },
 | 
| +                        end: { line: 1, column: 8 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 8],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 8 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 8],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 8 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x >>= 42': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '>>=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [6, 8],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 6 },
 | 
| +                        end: { line: 1, column: 8 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 8],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 8 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 8],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 8 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x >>>= 42': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '>>>=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [7, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 7 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x &= 42': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '&=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [5, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 7 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 7],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 7 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x ^= 42': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '^=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [5, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 7 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 7],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 7 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x |= 42': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '|=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [5, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 7 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 7],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 7 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Block': {
 | 
| +
 | 
| +        '{ foo }': {
 | 
| +            type: 'BlockStatement',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'foo',
 | 
| +                    range: [2, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 2 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [2, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 2 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 7],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 7 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '{ doThis(); doThat(); }': {
 | 
| +            type: 'BlockStatement',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'CallExpression',
 | 
| +                    callee: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'doThis',
 | 
| +                        range: [2, 8],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 2 },
 | 
| +                            end: { line: 1, column: 8 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    'arguments': [],
 | 
| +                    range: [2, 10],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 2 },
 | 
| +                        end: { line: 1, column: 10 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [2, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 2 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'CallExpression',
 | 
| +                    callee: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'doThat',
 | 
| +                        range: [12, 18],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 12 },
 | 
| +                            end: { line: 1, column: 18 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    'arguments': [],
 | 
| +                    range: [12, 20],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 12 },
 | 
| +                        end: { line: 1, column: 20 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [12, 21],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 12 },
 | 
| +                    end: { line: 1, column: 21 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 23],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 23 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '{}': {
 | 
| +            type: 'BlockStatement',
 | 
| +            body: [],
 | 
| +            range: [0, 2],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 2 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Variable Statement': {
 | 
| +
 | 
| +        'var x': {
 | 
| +            type: 'VariableDeclaration',
 | 
| +            declarations: [{
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [4, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: null,
 | 
| +                range: [4, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            }],
 | 
| +            kind: 'var',
 | 
| +            range: [0, 5],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 5 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'var x, y;': {
 | 
| +            type: 'VariableDeclaration',
 | 
| +            declarations: [{
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [4, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: null,
 | 
| +                range: [4, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [7, 8],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 7 },
 | 
| +                        end: { line: 1, column: 8 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: null,
 | 
| +                range: [7, 8],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 7 },
 | 
| +                    end: { line: 1, column: 8 }
 | 
| +                }
 | 
| +            }],
 | 
| +            kind: 'var',
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'var x = 42': {
 | 
| +            type: 'VariableDeclaration',
 | 
| +            declarations: [{
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [4, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [8, 10],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 10 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [4, 10],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 10 }
 | 
| +                }
 | 
| +            }],
 | 
| +            kind: 'var',
 | 
| +            range: [0, 10],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 10 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'var eval = 42, arguments = 42': {
 | 
| +            type: 'VariableDeclaration',
 | 
| +            declarations: [{
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'eval',
 | 
| +                    range: [4, 8],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 8 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [11, 13],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 11 },
 | 
| +                        end: { line: 1, column: 13 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [4, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'arguments',
 | 
| +                    range: [15, 24],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 24 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [27, 29],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 27 },
 | 
| +                        end: { line: 1, column: 29 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [15, 29],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 15 },
 | 
| +                    end: { line: 1, column: 29 }
 | 
| +                }
 | 
| +            }],
 | 
| +            kind: 'var',
 | 
| +            range: [0, 29],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 29 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'var x = 14, y = 3, z = 1977': {
 | 
| +            type: 'VariableDeclaration',
 | 
| +            declarations: [{
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [4, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 14,
 | 
| +                    raw: '14',
 | 
| +                    range: [8, 10],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 10 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [4, 10],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 10 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [12, 13],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 12 },
 | 
| +                        end: { line: 1, column: 13 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 3,
 | 
| +                    raw: '3',
 | 
| +                    range: [16, 17],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 16 },
 | 
| +                        end: { line: 1, column: 17 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [12, 17],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 12 },
 | 
| +                    end: { line: 1, column: 17 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'z',
 | 
| +                    range: [19, 20],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 19 },
 | 
| +                        end: { line: 1, column: 20 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 1977,
 | 
| +                    raw: '1977',
 | 
| +                    range: [23, 27],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 23 },
 | 
| +                        end: { line: 1, column: 27 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [19, 27],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 19 },
 | 
| +                    end: { line: 1, column: 27 }
 | 
| +                }
 | 
| +            }],
 | 
| +            kind: 'var',
 | 
| +            range: [0, 27],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 27 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'var implements, interface, package': {
 | 
| +            type: 'VariableDeclaration',
 | 
| +            declarations: [{
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'implements',
 | 
| +                    range: [4, 14],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 14 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: null,
 | 
| +                range: [4, 14],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 14 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'interface',
 | 
| +                    range: [16, 25],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 16 },
 | 
| +                        end: { line: 1, column: 25 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: null,
 | 
| +                range: [16, 25],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 16 },
 | 
| +                    end: { line: 1, column: 25 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'package',
 | 
| +                    range: [27, 34],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 27 },
 | 
| +                        end: { line: 1, column: 34 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: null,
 | 
| +                range: [27, 34],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 27 },
 | 
| +                    end: { line: 1, column: 34 }
 | 
| +                }
 | 
| +            }],
 | 
| +            kind: 'var',
 | 
| +            range: [0, 34],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 34 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'var private, protected, public, static': {
 | 
| +            type: 'VariableDeclaration',
 | 
| +            declarations: [{
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'private',
 | 
| +                    range: [4, 11],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 11 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: null,
 | 
| +                range: [4, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'protected',
 | 
| +                    range: [13, 22],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 13 },
 | 
| +                        end: { line: 1, column: 22 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: null,
 | 
| +                range: [13, 22],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 13 },
 | 
| +                    end: { line: 1, column: 22 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'public',
 | 
| +                    range: [24, 30],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 24 },
 | 
| +                        end: { line: 1, column: 30 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: null,
 | 
| +                range: [24, 30],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 24 },
 | 
| +                    end: { line: 1, column: 30 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'static',
 | 
| +                    range: [32, 38],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 32 },
 | 
| +                        end: { line: 1, column: 38 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: null,
 | 
| +                range: [32, 38],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 32 },
 | 
| +                    end: { line: 1, column: 38 }
 | 
| +                }
 | 
| +            }],
 | 
| +            kind: 'var',
 | 
| +            range: [0, 38],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 38 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Let Statement': {
 | 
| +
 | 
| +        'let x': {
 | 
| +            type: 'VariableDeclaration',
 | 
| +            declarations: [{
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [4, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: null,
 | 
| +                range: [4, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            }],
 | 
| +            kind: 'let',
 | 
| +            range: [0, 5],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 5 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '{ let x }': {
 | 
| +            type: 'BlockStatement',
 | 
| +            body: [{
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [6, 7],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 7 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: null,
 | 
| +                    range: [6, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 6 },
 | 
| +                        end: { line: 1, column: 7 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'let',
 | 
| +                range: [2, 8],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 2 },
 | 
| +                    end: { line: 1, column: 8 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '{ let x = 42 }': {
 | 
| +            type: 'BlockStatement',
 | 
| +            body: [{
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [6, 7],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 7 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 42,
 | 
| +                        raw: '42',
 | 
| +                        range: [10, 12],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 10 },
 | 
| +                            end: { line: 1, column: 12 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [6, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 6 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'let',
 | 
| +                range: [2, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 2 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 14],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 14 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '{ let x = 14, y = 3, z = 1977 }': {
 | 
| +            type: 'BlockStatement',
 | 
| +            body: [{
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [6, 7],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 7 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 14,
 | 
| +                        raw: '14',
 | 
| +                        range: [10, 12],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 10 },
 | 
| +                            end: { line: 1, column: 12 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [6, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 6 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                }, {
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [14, 15],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 14 },
 | 
| +                            end: { line: 1, column: 15 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 3,
 | 
| +                        raw: '3',
 | 
| +                        range: [18, 19],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 18 },
 | 
| +                            end: { line: 1, column: 19 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [14, 19],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 14 },
 | 
| +                        end: { line: 1, column: 19 }
 | 
| +                    }
 | 
| +                }, {
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'z',
 | 
| +                        range: [21, 22],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 21 },
 | 
| +                            end: { line: 1, column: 22 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 1977,
 | 
| +                        raw: '1977',
 | 
| +                        range: [25, 29],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 25 },
 | 
| +                            end: { line: 1, column: 29 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [21, 29],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 21 },
 | 
| +                        end: { line: 1, column: 29 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'let',
 | 
| +                range: [2, 30],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 2 },
 | 
| +                    end: { line: 1, column: 30 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 31],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 31 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Const Statement': {
 | 
| +
 | 
| +        'const x = 42': {
 | 
| +            type: 'VariableDeclaration',
 | 
| +            declarations: [{
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [6, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 6 },
 | 
| +                        end: { line: 1, column: 7 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [10, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 10 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [6, 12],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 6 },
 | 
| +                    end: { line: 1, column: 12 }
 | 
| +                }
 | 
| +            }],
 | 
| +            kind: 'const',
 | 
| +            range: [0, 12],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 12 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '{ const x = 42 }': {
 | 
| +            type: 'BlockStatement',
 | 
| +            body: [{
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [8, 9],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 9 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 42,
 | 
| +                        raw: '42',
 | 
| +                        range: [12, 14],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 12 },
 | 
| +                            end: { line: 1, column: 14 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [8, 14],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 14 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'const',
 | 
| +                range: [2, 15],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 2 },
 | 
| +                    end: { line: 1, column: 15 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 16],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 16 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '{ const x = 14, y = 3, z = 1977 }': {
 | 
| +            type: 'BlockStatement',
 | 
| +            body: [{
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [8, 9],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 9 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 14,
 | 
| +                        raw: '14',
 | 
| +                        range: [12, 14],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 12 },
 | 
| +                            end: { line: 1, column: 14 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [8, 14],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 14 }
 | 
| +                    }
 | 
| +                }, {
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [16, 17],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 16 },
 | 
| +                            end: { line: 1, column: 17 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 3,
 | 
| +                        raw: '3',
 | 
| +                        range: [20, 21],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 20 },
 | 
| +                            end: { line: 1, column: 21 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [16, 21],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 16 },
 | 
| +                        end: { line: 1, column: 21 }
 | 
| +                    }
 | 
| +                }, {
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'z',
 | 
| +                        range: [23, 24],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 23 },
 | 
| +                            end: { line: 1, column: 24 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 1977,
 | 
| +                        raw: '1977',
 | 
| +                        range: [27, 31],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 27 },
 | 
| +                            end: { line: 1, column: 31 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [23, 31],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 23 },
 | 
| +                        end: { line: 1, column: 31 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'const',
 | 
| +                range: [2, 32],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 2 },
 | 
| +                    end: { line: 1, column: 32 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 33],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 33 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Empty Statement': {
 | 
| +
 | 
| +        ';': {
 | 
| +            type: 'EmptyStatement',
 | 
| +            range: [0, 1],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 1 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Expression Statement': {
 | 
| +
 | 
| +        'x': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'x',
 | 
| +                range: [0, 1],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 1 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 1],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 1 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'x, y': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'SequenceExpression',
 | 
| +                expressions: [{
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [0, 1],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 1 }
 | 
| +                    }
 | 
| +                }, {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [3, 4],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 3 },
 | 
| +                        end: { line: 1, column: 4 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [0, 4],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 4 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 4],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 4 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '\\u0061': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'a',
 | 
| +                range: [0, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'a\\u0061': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'aa',
 | 
| +                range: [0, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 7],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 7 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '\\ua': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'ua',
 | 
| +                range: [0, 3],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 3 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 3],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 3 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'a\\u': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'au',
 | 
| +                range: [0, 3],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 3 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 3],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 3 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'If Statement': {
 | 
| +
 | 
| +        'if (morning) goodMorning()': {
 | 
| +            type: 'IfStatement',
 | 
| +            test: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'morning',
 | 
| +                range: [4, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            consequent: {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'CallExpression',
 | 
| +                    callee: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'goodMorning',
 | 
| +                        range: [13, 24],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 13 },
 | 
| +                            end: { line: 1, column: 24 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    'arguments': [],
 | 
| +                    range: [13, 26],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 13 },
 | 
| +                        end: { line: 1, column: 26 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [13, 26],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 13 },
 | 
| +                    end: { line: 1, column: 26 }
 | 
| +                }
 | 
| +            },
 | 
| +            alternate: null,
 | 
| +            range: [0, 26],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 26 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'if (morning) (function(){})': {
 | 
| +            type: 'IfStatement',
 | 
| +            test: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'morning',
 | 
| +                range: [4, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            consequent: {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'FunctionExpression',
 | 
| +                    id: null,
 | 
| +                    params: [],
 | 
| +                    defaults: [],
 | 
| +                    body: {
 | 
| +                        type: 'BlockStatement',
 | 
| +                        body: [],
 | 
| +                        range: [24, 26],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 24 },
 | 
| +                            end: { line: 1, column: 26 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    rest: null,
 | 
| +                    generator: false,
 | 
| +                    expression: false,
 | 
| +                    range: [14, 26],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 14 },
 | 
| +                        end: { line: 1, column: 26 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [13, 27],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 13 },
 | 
| +                    end: { line: 1, column: 27 }
 | 
| +                }
 | 
| +            },
 | 
| +            alternate: null,
 | 
| +            range: [0, 27],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 27 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'if (morning) var x = 0;': {
 | 
| +            type: 'IfStatement',
 | 
| +            test: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'morning',
 | 
| +                range: [4, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            consequent: {
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [17, 18],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 17 },
 | 
| +                            end: { line: 1, column: 18 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 0,
 | 
| +                        raw: '0',
 | 
| +                        range: [21, 22],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 21 },
 | 
| +                            end: { line: 1, column: 22 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [17, 22],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 17 },
 | 
| +                        end: { line: 1, column: 22 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'var',
 | 
| +                range: [13, 23],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 13 },
 | 
| +                    end: { line: 1, column: 23 }
 | 
| +                }
 | 
| +            },
 | 
| +            alternate: null,
 | 
| +            range: [0, 23],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 23 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'if (morning) function a(){}': {
 | 
| +            type: 'IfStatement',
 | 
| +            test: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'morning',
 | 
| +                range: [4, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            consequent: {
 | 
| +                type: 'FunctionDeclaration',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'a',
 | 
| +                    range: [22, 23],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 22 },
 | 
| +                        end: { line: 1, column: 23 }
 | 
| +                    }
 | 
| +                },
 | 
| +                params: [],
 | 
| +                defaults: [],
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [],
 | 
| +                    range: [25, 27],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 25 },
 | 
| +                        end: { line: 1, column: 27 }
 | 
| +                    }
 | 
| +                },
 | 
| +                rest: null,
 | 
| +                generator: false,
 | 
| +                expression: false,
 | 
| +                range: [13, 27],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 13 },
 | 
| +                    end: { line: 1, column: 27 }
 | 
| +                }
 | 
| +            },
 | 
| +            alternate: null,
 | 
| +            range: [0, 27],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 27 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'if (morning) goodMorning(); else goodDay()': {
 | 
| +            type: 'IfStatement',
 | 
| +            test: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'morning',
 | 
| +                range: [4, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            consequent: {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'CallExpression',
 | 
| +                    callee: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'goodMorning',
 | 
| +                        range: [13, 24],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 13 },
 | 
| +                            end: { line: 1, column: 24 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    'arguments': [],
 | 
| +                    range: [13, 26],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 13 },
 | 
| +                        end: { line: 1, column: 26 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [13, 27],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 13 },
 | 
| +                    end: { line: 1, column: 27 }
 | 
| +                }
 | 
| +            },
 | 
| +            alternate: {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'CallExpression',
 | 
| +                    callee: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'goodDay',
 | 
| +                        range: [33, 40],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 33 },
 | 
| +                            end: { line: 1, column: 40 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    'arguments': [],
 | 
| +                    range: [33, 42],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 33 },
 | 
| +                        end: { line: 1, column: 42 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [33, 42],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 33 },
 | 
| +                    end: { line: 1, column: 42 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 42],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 42 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Iteration Statements': {
 | 
| +
 | 
| +        'do keep(); while (true)': {
 | 
| +            type: 'DoWhileStatement',
 | 
| +            body: {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'CallExpression',
 | 
| +                    callee: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'keep',
 | 
| +                        range: [3, 7],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 3 },
 | 
| +                            end: { line: 1, column: 7 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    'arguments': [],
 | 
| +                    range: [3, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 3 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [3, 10],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 3 },
 | 
| +                    end: { line: 1, column: 10 }
 | 
| +                }
 | 
| +            },
 | 
| +            test: {
 | 
| +                type: 'Literal',
 | 
| +                value: true,
 | 
| +                raw: 'true',
 | 
| +                range: [18, 22],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 18 },
 | 
| +                    end: { line: 1, column: 22 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 23],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 23 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'do keep(); while (true);': {
 | 
| +            type: 'DoWhileStatement',
 | 
| +            body: {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'CallExpression',
 | 
| +                    callee: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'keep',
 | 
| +                        range: [3, 7],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 3 },
 | 
| +                            end: { line: 1, column: 7 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    'arguments': [],
 | 
| +                    range: [3, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 3 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [3, 10],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 3 },
 | 
| +                    end: { line: 1, column: 10 }
 | 
| +                }
 | 
| +            },
 | 
| +            test: {
 | 
| +                type: 'Literal',
 | 
| +                value: true,
 | 
| +                raw: 'true',
 | 
| +                range: [18, 22],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 18 },
 | 
| +                    end: { line: 1, column: 22 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 24],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 24 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'do { x++; y--; } while (x < 10)': {
 | 
| +            type: 'DoWhileStatement',
 | 
| +            body: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [{
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'UpdateExpression',
 | 
| +                        operator: '++',
 | 
| +                        argument: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'x',
 | 
| +                            range: [5, 6],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 5 },
 | 
| +                                end: { line: 1, column: 6 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        prefix: false,
 | 
| +                        range: [5, 8],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 5 },
 | 
| +                            end: { line: 1, column: 8 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [5, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                }, {
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'UpdateExpression',
 | 
| +                        operator: '--',
 | 
| +                        argument: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'y',
 | 
| +                            range: [10, 11],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 10 },
 | 
| +                                end: { line: 1, column: 11 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        prefix: false,
 | 
| +                        range: [10, 13],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 10 },
 | 
| +                            end: { line: 1, column: 13 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [10, 14],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 10 },
 | 
| +                        end: { line: 1, column: 14 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [3, 16],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 3 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            },
 | 
| +            test: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '<',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [24, 25],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 24 },
 | 
| +                        end: { line: 1, column: 25 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 10,
 | 
| +                    raw: '10',
 | 
| +                    range: [28, 30],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 28 },
 | 
| +                        end: { line: 1, column: 30 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [24, 30],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 24 },
 | 
| +                    end: { line: 1, column: 30 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 31],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 31 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '{ do { } while (false) false }': {
 | 
| +            type: 'BlockStatement',
 | 
| +            body: [{
 | 
| +                type: 'DoWhileStatement',
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [],
 | 
| +                    range: [5, 8],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 8 }
 | 
| +                    }
 | 
| +                },
 | 
| +                test: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: false,
 | 
| +                    raw: 'false',
 | 
| +                    range: [16, 21],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 16 },
 | 
| +                        end: { line: 1, column: 21 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [2, 22],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 2 },
 | 
| +                    end: { line: 1, column: 22 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: false,
 | 
| +                    raw: 'false',
 | 
| +                    range: [23, 28],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 23 },
 | 
| +                        end: { line: 1, column: 28 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [23, 29],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 23 },
 | 
| +                    end: { line: 1, column: 29 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 30],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 30 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'while (true) doSomething()': {
 | 
| +            type: 'WhileStatement',
 | 
| +            test: {
 | 
| +                type: 'Literal',
 | 
| +                value: true,
 | 
| +                raw: 'true',
 | 
| +                range: [7, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 7 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'CallExpression',
 | 
| +                    callee: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'doSomething',
 | 
| +                        range: [13, 24],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 13 },
 | 
| +                            end: { line: 1, column: 24 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    'arguments': [],
 | 
| +                    range: [13, 26],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 13 },
 | 
| +                        end: { line: 1, column: 26 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [13, 26],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 13 },
 | 
| +                    end: { line: 1, column: 26 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 26],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 26 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'while (x < 10) { x++; y--; }': {
 | 
| +            type: 'WhileStatement',
 | 
| +            test: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '<',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [7, 8],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 7 },
 | 
| +                        end: { line: 1, column: 8 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 10,
 | 
| +                    raw: '10',
 | 
| +                    range: [11, 13],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 11 },
 | 
| +                        end: { line: 1, column: 13 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [7, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 7 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [{
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'UpdateExpression',
 | 
| +                        operator: '++',
 | 
| +                        argument: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'x',
 | 
| +                            range: [17, 18],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 17 },
 | 
| +                                end: { line: 1, column: 18 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        prefix: false,
 | 
| +                        range: [17, 20],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 17 },
 | 
| +                            end: { line: 1, column: 20 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [17, 21],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 17 },
 | 
| +                        end: { line: 1, column: 21 }
 | 
| +                    }
 | 
| +                }, {
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'UpdateExpression',
 | 
| +                        operator: '--',
 | 
| +                        argument: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'y',
 | 
| +                            range: [22, 23],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 22 },
 | 
| +                                end: { line: 1, column: 23 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        prefix: false,
 | 
| +                        range: [22, 25],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 22 },
 | 
| +                            end: { line: 1, column: 25 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [22, 26],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 22 },
 | 
| +                        end: { line: 1, column: 26 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [15, 28],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 15 },
 | 
| +                    end: { line: 1, column: 28 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 28],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 28 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'for(;;);': {
 | 
| +            type: 'ForStatement',
 | 
| +            init: null,
 | 
| +            test: null,
 | 
| +            update: null,
 | 
| +            body: {
 | 
| +                type: 'EmptyStatement',
 | 
| +                range: [7, 8],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 7 },
 | 
| +                    end: { line: 1, column: 8 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 8],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 8 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'for(;;){}': {
 | 
| +            type: 'ForStatement',
 | 
| +            init: null,
 | 
| +            test: null,
 | 
| +            update: null,
 | 
| +            body: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [],
 | 
| +                range: [7, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 7 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'for(x = 0;;);': {
 | 
| +            type: 'ForStatement',
 | 
| +            init: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [4, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 0,
 | 
| +                    raw: '0',
 | 
| +                    range: [8, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [4, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            test: null,
 | 
| +            update: null,
 | 
| +            body: {
 | 
| +                type: 'EmptyStatement',
 | 
| +                range: [12, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 12 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 13],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 13 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'for(var x = 0;;);': {
 | 
| +            type: 'ForStatement',
 | 
| +            init: {
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [8, 9],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 9 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 0,
 | 
| +                        raw: '0',
 | 
| +                        range: [12, 13],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 12 },
 | 
| +                            end: { line: 1, column: 13 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [8, 13],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 13 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'var',
 | 
| +                range: [4, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            },
 | 
| +            test: null,
 | 
| +            update: null,
 | 
| +            body: {
 | 
| +                type: 'EmptyStatement',
 | 
| +                range: [16, 17],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 16 },
 | 
| +                    end: { line: 1, column: 17 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 17],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 17 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'for(let x = 0;;);': {
 | 
| +            type: 'ForStatement',
 | 
| +            init: {
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [8, 9],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 9 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 0,
 | 
| +                        raw: '0',
 | 
| +                        range: [12, 13],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 12 },
 | 
| +                            end: { line: 1, column: 13 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [8, 13],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 13 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'let',
 | 
| +                range: [4, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            },
 | 
| +            test: null,
 | 
| +            update: null,
 | 
| +            body: {
 | 
| +                type: 'EmptyStatement',
 | 
| +                range: [16, 17],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 16 },
 | 
| +                    end: { line: 1, column: 17 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 17],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 17 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'for(var x = 0, y = 1;;);': {
 | 
| +            type: 'ForStatement',
 | 
| +            init: {
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [8, 9],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 9 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 0,
 | 
| +                        raw: '0',
 | 
| +                        range: [12, 13],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 12 },
 | 
| +                            end: { line: 1, column: 13 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [8, 13],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 13 }
 | 
| +                    }
 | 
| +                }, {
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [15, 16],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 15 },
 | 
| +                            end: { line: 1, column: 16 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 1,
 | 
| +                        raw: '1',
 | 
| +                        range: [19, 20],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 19 },
 | 
| +                            end: { line: 1, column: 20 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [15, 20],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 20 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'var',
 | 
| +                range: [4, 20],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 20 }
 | 
| +                }
 | 
| +            },
 | 
| +            test: null,
 | 
| +            update: null,
 | 
| +            body: {
 | 
| +                type: 'EmptyStatement',
 | 
| +                range: [23, 24],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 23 },
 | 
| +                    end: { line: 1, column: 24 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 24],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 24 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'for(x = 0; x < 42;);': {
 | 
| +            type: 'ForStatement',
 | 
| +            init: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [4, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 0,
 | 
| +                    raw: '0',
 | 
| +                    range: [8, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [4, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            test: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '<',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [11, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 11 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [15, 17],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 17 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [11, 17],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 11 },
 | 
| +                    end: { line: 1, column: 17 }
 | 
| +                }
 | 
| +            },
 | 
| +            update: null,
 | 
| +            body: {
 | 
| +                type: 'EmptyStatement',
 | 
| +                range: [19, 20],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 19 },
 | 
| +                    end: { line: 1, column: 20 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 20],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 20 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'for(x = 0; x < 42; x++);': {
 | 
| +            type: 'ForStatement',
 | 
| +            init: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [4, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 0,
 | 
| +                    raw: '0',
 | 
| +                    range: [8, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [4, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            test: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '<',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [11, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 11 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [15, 17],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 17 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [11, 17],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 11 },
 | 
| +                    end: { line: 1, column: 17 }
 | 
| +                }
 | 
| +            },
 | 
| +            update: {
 | 
| +                type: 'UpdateExpression',
 | 
| +                operator: '++',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [19, 20],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 19 },
 | 
| +                        end: { line: 1, column: 20 }
 | 
| +                    }
 | 
| +                },
 | 
| +                prefix: false,
 | 
| +                range: [19, 22],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 19 },
 | 
| +                    end: { line: 1, column: 22 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'EmptyStatement',
 | 
| +                range: [23, 24],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 23 },
 | 
| +                    end: { line: 1, column: 24 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 24],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 24 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'for(x = 0; x < 42; x++) process(x);': {
 | 
| +            type: 'ForStatement',
 | 
| +            init: {
 | 
| +                type: 'AssignmentExpression',
 | 
| +                operator: '=',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [4, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 0,
 | 
| +                    raw: '0',
 | 
| +                    range: [8, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [4, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            test: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '<',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [11, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 11 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [15, 17],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 17 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [11, 17],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 11 },
 | 
| +                    end: { line: 1, column: 17 }
 | 
| +                }
 | 
| +            },
 | 
| +            update: {
 | 
| +                type: 'UpdateExpression',
 | 
| +                operator: '++',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [19, 20],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 19 },
 | 
| +                        end: { line: 1, column: 20 }
 | 
| +                    }
 | 
| +                },
 | 
| +                prefix: false,
 | 
| +                range: [19, 22],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 19 },
 | 
| +                    end: { line: 1, column: 22 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'CallExpression',
 | 
| +                    callee: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'process',
 | 
| +                        range: [24, 31],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 24 },
 | 
| +                            end: { line: 1, column: 31 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    'arguments': [{
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [32, 33],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 32 },
 | 
| +                            end: { line: 1, column: 33 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [24, 34],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 24 },
 | 
| +                        end: { line: 1, column: 34 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [24, 35],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 24 },
 | 
| +                    end: { line: 1, column: 35 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 35],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 35 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'for(x in list) process(x);': {
 | 
| +            type: 'ForInStatement',
 | 
| +            left: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'x',
 | 
| +                range: [4, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            },
 | 
| +            right: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'list',
 | 
| +                range: [9, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 9 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'CallExpression',
 | 
| +                    callee: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'process',
 | 
| +                        range: [15, 22],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 15 },
 | 
| +                            end: { line: 1, column: 22 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    'arguments': [{
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [23, 24],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 23 },
 | 
| +                            end: { line: 1, column: 24 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [15, 25],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 25 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [15, 26],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 15 },
 | 
| +                    end: { line: 1, column: 26 }
 | 
| +                }
 | 
| +            },
 | 
| +            each: false,
 | 
| +            range: [0, 26],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 26 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'for (var x in list) process(x);': {
 | 
| +            type: 'ForInStatement',
 | 
| +            left: {
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [9, 10],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 9 },
 | 
| +                            end: { line: 1, column: 10 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: null,
 | 
| +                    range: [9, 10],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 9 },
 | 
| +                        end: { line: 1, column: 10 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'var',
 | 
| +                range: [5, 10],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 5 },
 | 
| +                    end: { line: 1, column: 10 }
 | 
| +                }
 | 
| +            },
 | 
| +            right: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'list',
 | 
| +                range: [14, 18],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 18 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'CallExpression',
 | 
| +                    callee: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'process',
 | 
| +                        range: [20, 27],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 20 },
 | 
| +                            end: { line: 1, column: 27 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    'arguments': [{
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [28, 29],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 28 },
 | 
| +                            end: { line: 1, column: 29 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [20, 30],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 20 },
 | 
| +                        end: { line: 1, column: 30 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [20, 31],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 20 },
 | 
| +                    end: { line: 1, column: 31 }
 | 
| +                }
 | 
| +            },
 | 
| +            each: false,
 | 
| +            range: [0, 31],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 31 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'for (var x = 42 in list) process(x);': {
 | 
| +            type: 'ForInStatement',
 | 
| +            left: {
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [9, 10],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 9 },
 | 
| +                            end: { line: 1, column: 10 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 42,
 | 
| +                        raw: '42',
 | 
| +                        range: [13, 15],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 13 },
 | 
| +                            end: { line: 1, column: 15 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [9, 15],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 9 },
 | 
| +                        end: { line: 1, column: 15 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'var',
 | 
| +                range: [5, 15],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 5 },
 | 
| +                    end: { line: 1, column: 15 }
 | 
| +                }
 | 
| +            },
 | 
| +            right: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'list',
 | 
| +                range: [19, 23],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 19 },
 | 
| +                    end: { line: 1, column: 23 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'CallExpression',
 | 
| +                    callee: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'process',
 | 
| +                        range: [25, 32],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 25 },
 | 
| +                            end: { line: 1, column: 32 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    'arguments': [{
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [33, 34],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 33 },
 | 
| +                            end: { line: 1, column: 34 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [25, 35],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 25 },
 | 
| +                        end: { line: 1, column: 35 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [25, 36],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 25 },
 | 
| +                    end: { line: 1, column: 36 }
 | 
| +                }
 | 
| +            },
 | 
| +            each: false,
 | 
| +            range: [0, 36],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 36 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'for (let x in list) process(x);': {
 | 
| +            type: 'ForInStatement',
 | 
| +            left: {
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [9, 10],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 9 },
 | 
| +                            end: { line: 1, column: 10 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: null,
 | 
| +                    range: [9, 10],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 9 },
 | 
| +                        end: { line: 1, column: 10 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'let',
 | 
| +                range: [5, 10],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 5 },
 | 
| +                    end: { line: 1, column: 10 }
 | 
| +                }
 | 
| +            },
 | 
| +            right: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'list',
 | 
| +                range: [14, 18],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 18 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'CallExpression',
 | 
| +                    callee: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'process',
 | 
| +                        range: [20, 27],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 20 },
 | 
| +                            end: { line: 1, column: 27 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    'arguments': [{
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [28, 29],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 28 },
 | 
| +                            end: { line: 1, column: 29 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [20, 30],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 20 },
 | 
| +                        end: { line: 1, column: 30 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [20, 31],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 20 },
 | 
| +                    end: { line: 1, column: 31 }
 | 
| +                }
 | 
| +            },
 | 
| +            each: false,
 | 
| +            range: [0, 31],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 31 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'for (let x = 42 in list) process(x);': {
 | 
| +            type: 'ForInStatement',
 | 
| +            left: {
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [9, 10],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 9 },
 | 
| +                            end: { line: 1, column: 10 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 42,
 | 
| +                        raw: '42',
 | 
| +                        range: [13, 15],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 13 },
 | 
| +                            end: { line: 1, column: 15 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [9, 15],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 9 },
 | 
| +                        end: { line: 1, column: 15 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'let',
 | 
| +                range: [5, 15],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 5 },
 | 
| +                    end: { line: 1, column: 15 }
 | 
| +                }
 | 
| +            },
 | 
| +            right: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'list',
 | 
| +                range: [19, 23],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 19 },
 | 
| +                    end: { line: 1, column: 23 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'CallExpression',
 | 
| +                    callee: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'process',
 | 
| +                        range: [25, 32],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 25 },
 | 
| +                            end: { line: 1, column: 32 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    'arguments': [{
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [33, 34],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 33 },
 | 
| +                            end: { line: 1, column: 34 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [25, 35],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 25 },
 | 
| +                        end: { line: 1, column: 35 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [25, 36],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 25 },
 | 
| +                    end: { line: 1, column: 36 }
 | 
| +                }
 | 
| +            },
 | 
| +            each: false,
 | 
| +            range: [0, 36],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 36 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'for (var i = function() { return 10 in [] } in list) process(x);': {
 | 
| +            type: 'ForInStatement',
 | 
| +            left: {
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'i',
 | 
| +                        range: [9, 10],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 9 },
 | 
| +                            end: { line: 1, column: 10 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'FunctionExpression',
 | 
| +                        id: null,
 | 
| +                        params: [],
 | 
| +                        defaults: [],
 | 
| +                        body: {
 | 
| +                            type: 'BlockStatement',
 | 
| +                            body: [{
 | 
| +                                type: 'ReturnStatement',
 | 
| +                                argument: {
 | 
| +                                    type: 'BinaryExpression',
 | 
| +                                    operator: 'in',
 | 
| +                                    left: {
 | 
| +                                        type: 'Literal',
 | 
| +                                        value: 10,
 | 
| +                                        raw: '10',
 | 
| +                                        range: [33, 35],
 | 
| +                                        loc: {
 | 
| +                                            start: { line: 1, column: 33 },
 | 
| +                                            end: { line: 1, column: 35 }
 | 
| +                                        }
 | 
| +                                    },
 | 
| +                                    right: {
 | 
| +                                        type: 'ArrayExpression',
 | 
| +                                        elements: [],
 | 
| +                                        range: [39, 41],
 | 
| +                                        loc: {
 | 
| +                                            start: { line: 1, column: 39 },
 | 
| +                                            end: { line: 1, column: 41 }
 | 
| +                                        }
 | 
| +                                    },
 | 
| +                                    range: [33, 41],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 33 },
 | 
| +                                        end: { line: 1, column: 41 }
 | 
| +                                    }
 | 
| +                                },
 | 
| +                                range: [26, 42],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 26 },
 | 
| +                                    end: { line: 1, column: 42 }
 | 
| +                                }
 | 
| +                            }],
 | 
| +                            range: [24, 43],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 24 },
 | 
| +                                end: { line: 1, column: 43 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        rest: null,
 | 
| +                        generator: false,
 | 
| +                        expression: false,
 | 
| +                        range: [13, 43],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 13 },
 | 
| +                            end: { line: 1, column: 43 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [9, 43],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 9 },
 | 
| +                        end: { line: 1, column: 43 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'var',
 | 
| +                range: [5, 43],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 5 },
 | 
| +                    end: { line: 1, column: 43 }
 | 
| +                }
 | 
| +            },
 | 
| +            right: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'list',
 | 
| +                range: [47, 51],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 47 },
 | 
| +                    end: { line: 1, column: 51 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'CallExpression',
 | 
| +                    callee: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'process',
 | 
| +                        range: [53, 60],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 53 },
 | 
| +                            end: { line: 1, column: 60 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    'arguments': [{
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [61, 62],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 61 },
 | 
| +                            end: { line: 1, column: 62 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [53, 63],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 53 },
 | 
| +                        end: { line: 1, column: 63 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [53, 64],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 53 },
 | 
| +                    end: { line: 1, column: 64 }
 | 
| +                }
 | 
| +            },
 | 
| +            each: false,
 | 
| +            range: [0, 64],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 64 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'continue statement': {
 | 
| +
 | 
| +        'while (true) { continue; }': {
 | 
| +            type: 'WhileStatement',
 | 
| +            test: {
 | 
| +                type: 'Literal',
 | 
| +                value: true,
 | 
| +                raw: 'true',
 | 
| +                range: [7, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 7 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [
 | 
| +                    {
 | 
| +                        type: 'ContinueStatement',
 | 
| +                        label: null,
 | 
| +                        range: [15, 24],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 15 },
 | 
| +                            end: { line: 1, column: 24 }
 | 
| +                        }
 | 
| +                    }
 | 
| +                ],
 | 
| +                range: [13, 26],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 13 },
 | 
| +                    end: { line: 1, column: 26 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 26],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 26 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'while (true) { continue }': {
 | 
| +            type: 'WhileStatement',
 | 
| +            test: {
 | 
| +                type: 'Literal',
 | 
| +                value: true,
 | 
| +                raw: 'true',
 | 
| +                range: [7, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 7 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [
 | 
| +                    {
 | 
| +                        type: 'ContinueStatement',
 | 
| +                        label: null,
 | 
| +                        range: [15, 24],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 15 },
 | 
| +                            end: { line: 1, column: 24 }
 | 
| +                        }
 | 
| +                    }
 | 
| +                ],
 | 
| +                range: [13, 25],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 13 },
 | 
| +                    end: { line: 1, column: 25 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 25],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 25 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'done: while (true) { continue done }': {
 | 
| +            type: 'LabeledStatement',
 | 
| +            label: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'done',
 | 
| +                range: [0, 4],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 4 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'WhileStatement',
 | 
| +                test: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: true,
 | 
| +                    raw: 'true',
 | 
| +                    range: [13, 17],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 13 },
 | 
| +                        end: { line: 1, column: 17 }
 | 
| +                    }
 | 
| +                },
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [
 | 
| +                        {
 | 
| +                            type: 'ContinueStatement',
 | 
| +                            label: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'done',
 | 
| +                                range: [30, 34],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 30 },
 | 
| +                                    end: { line: 1, column: 34 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            range: [21, 35],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 21 },
 | 
| +                                end: { line: 1, column: 35 }
 | 
| +                            }
 | 
| +                        }
 | 
| +                    ],
 | 
| +                    range: [19, 36],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 19 },
 | 
| +                        end: { line: 1, column: 36 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [6, 36],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 6 },
 | 
| +                    end: { line: 1, column: 36 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 36],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 36 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'done: while (true) { continue done; }': {
 | 
| +            type: 'LabeledStatement',
 | 
| +            label: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'done',
 | 
| +                range: [0, 4],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 4 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'WhileStatement',
 | 
| +                test: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: true,
 | 
| +                    raw: 'true',
 | 
| +                    range: [13, 17],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 13 },
 | 
| +                        end: { line: 1, column: 17 }
 | 
| +                    }
 | 
| +                },
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [
 | 
| +                        {
 | 
| +                            type: 'ContinueStatement',
 | 
| +                            label: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'done',
 | 
| +                                range: [30, 34],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 30 },
 | 
| +                                    end: { line: 1, column: 34 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            range: [21, 35],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 21 },
 | 
| +                                end: { line: 1, column: 35 }
 | 
| +                            }
 | 
| +                        }
 | 
| +                    ],
 | 
| +                    range: [19, 37],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 19 },
 | 
| +                        end: { line: 1, column: 37 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [6, 37],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 6 },
 | 
| +                    end: { line: 1, column: 37 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 37],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 37 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'break statement': {
 | 
| +
 | 
| +        'while (true) { break }': {
 | 
| +            type: 'WhileStatement',
 | 
| +            test: {
 | 
| +                type: 'Literal',
 | 
| +                value: true,
 | 
| +                raw: 'true',
 | 
| +                range: [7, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 7 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [
 | 
| +                    {
 | 
| +                        type: 'BreakStatement',
 | 
| +                        label: null,
 | 
| +                        range: [15, 21],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 15 },
 | 
| +                            end: { line: 1, column: 21 }
 | 
| +                        }
 | 
| +                    }
 | 
| +                ],
 | 
| +                range: [13, 22],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 13 },
 | 
| +                    end: { line: 1, column: 22 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 22],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 22 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'done: while (true) { break done }': {
 | 
| +            type: 'LabeledStatement',
 | 
| +            label: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'done',
 | 
| +                range: [0, 4],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 4 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'WhileStatement',
 | 
| +                test: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: true,
 | 
| +                    raw: 'true',
 | 
| +                    range: [13, 17],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 13 },
 | 
| +                        end: { line: 1, column: 17 }
 | 
| +                    }
 | 
| +                },
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [
 | 
| +                        {
 | 
| +                            type: 'BreakStatement',
 | 
| +                            label: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'done',
 | 
| +                                range: [27, 31],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 27 },
 | 
| +                                    end: { line: 1, column: 31 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            range: [21, 32],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 21 },
 | 
| +                                end: { line: 1, column: 32 }
 | 
| +                            }
 | 
| +                        }
 | 
| +                    ],
 | 
| +                    range: [19, 33],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 19 },
 | 
| +                        end: { line: 1, column: 33 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [6, 33],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 6 },
 | 
| +                    end: { line: 1, column: 33 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 33],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 33 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'done: while (true) { break done; }': {
 | 
| +            type: 'LabeledStatement',
 | 
| +            label: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'done',
 | 
| +                range: [0, 4],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 4 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'WhileStatement',
 | 
| +                test: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: true,
 | 
| +                    raw: 'true',
 | 
| +                    range: [13, 17],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 13 },
 | 
| +                        end: { line: 1, column: 17 }
 | 
| +                    }
 | 
| +                },
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [
 | 
| +                        {
 | 
| +                            type: 'BreakStatement',
 | 
| +                            label: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'done',
 | 
| +                                range: [27, 31],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 27 },
 | 
| +                                    end: { line: 1, column: 31 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            range: [21, 32],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 21 },
 | 
| +                                end: { line: 1, column: 32 }
 | 
| +                            }
 | 
| +                        }
 | 
| +                    ],
 | 
| +                    range: [19, 34],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 19 },
 | 
| +                        end: { line: 1, column: 34 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [6, 34],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 6 },
 | 
| +                    end: { line: 1, column: 34 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 34],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 34 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'return statement': {
 | 
| +
 | 
| +        '(function(){ return })': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'FunctionExpression',
 | 
| +                id: null,
 | 
| +                params: [],
 | 
| +                defaults: [],
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [
 | 
| +                        {
 | 
| +                            type: 'ReturnStatement',
 | 
| +                            argument: null,
 | 
| +                            range: [13, 20],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 13 },
 | 
| +                                end: { line: 1, column: 20 }
 | 
| +                            }
 | 
| +                        }
 | 
| +                    ],
 | 
| +                    range: [11, 21],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 11 },
 | 
| +                        end: { line: 1, column: 21 }
 | 
| +                    }
 | 
| +                },
 | 
| +                rest: null,
 | 
| +                generator: false,
 | 
| +                expression: false,
 | 
| +                range: [1, 21],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 1 },
 | 
| +                    end: { line: 1, column: 21 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 22],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 22 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '(function(){ return; })': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'FunctionExpression',
 | 
| +                id: null,
 | 
| +                params: [],
 | 
| +                defaults: [],
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [
 | 
| +                        {
 | 
| +                            type: 'ReturnStatement',
 | 
| +                            argument: null,
 | 
| +                            range: [13, 20],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 13 },
 | 
| +                                end: { line: 1, column: 20 }
 | 
| +                            }
 | 
| +                        }
 | 
| +                    ],
 | 
| +                    range: [11, 22],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 11 },
 | 
| +                        end: { line: 1, column: 22 }
 | 
| +                    }
 | 
| +                },
 | 
| +                rest: null,
 | 
| +                generator: false,
 | 
| +                expression: false,
 | 
| +                range: [1, 22],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 1 },
 | 
| +                    end: { line: 1, column: 22 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 23],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 23 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '(function(){ return x; })': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'FunctionExpression',
 | 
| +                id: null,
 | 
| +                params: [],
 | 
| +                defaults: [],
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [
 | 
| +                        {
 | 
| +                            type: 'ReturnStatement',
 | 
| +                            argument: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'x',
 | 
| +                                range: [20, 21],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 20 },
 | 
| +                                    end: { line: 1, column: 21 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            range: [13, 22],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 13 },
 | 
| +                                end: { line: 1, column: 22 }
 | 
| +                            }
 | 
| +                        }
 | 
| +                    ],
 | 
| +                    range: [11, 24],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 11 },
 | 
| +                        end: { line: 1, column: 24 }
 | 
| +                    }
 | 
| +                },
 | 
| +                rest: null,
 | 
| +                generator: false,
 | 
| +                expression: false,
 | 
| +                range: [1, 24],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 1 },
 | 
| +                    end: { line: 1, column: 24 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 25],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 25 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '(function(){ return x * y })': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'FunctionExpression',
 | 
| +                id: null,
 | 
| +                params: [],
 | 
| +                defaults: [],
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [
 | 
| +                        {
 | 
| +                            type: 'ReturnStatement',
 | 
| +                            argument: {
 | 
| +                                type: 'BinaryExpression',
 | 
| +                                operator: '*',
 | 
| +                                left: {
 | 
| +                                    type: 'Identifier',
 | 
| +                                    name: 'x',
 | 
| +                                    range: [20, 21],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 20 },
 | 
| +                                        end: { line: 1, column: 21 }
 | 
| +                                    }
 | 
| +                                },
 | 
| +                                right: {
 | 
| +                                    type: 'Identifier',
 | 
| +                                    name: 'y',
 | 
| +                                    range: [24, 25],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 24 },
 | 
| +                                        end: { line: 1, column: 25 }
 | 
| +                                    }
 | 
| +                                },
 | 
| +                                range: [20, 25],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 20 },
 | 
| +                                    end: { line: 1, column: 25 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            range: [13, 26],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 13 },
 | 
| +                                end: { line: 1, column: 26 }
 | 
| +                            }
 | 
| +                        }
 | 
| +                    ],
 | 
| +                    range: [11, 27],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 11 },
 | 
| +                        end: { line: 1, column: 27 }
 | 
| +                    }
 | 
| +                },
 | 
| +                rest: null,
 | 
| +                generator: false,
 | 
| +                expression: false,
 | 
| +                range: [1, 27],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 1 },
 | 
| +                    end: { line: 1, column: 27 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 28],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 28 }
 | 
| +            }
 | 
| +        }
 | 
| +    },
 | 
| +
 | 
| +    'with statement': {
 | 
| +
 | 
| +        'with (x) foo = bar': {
 | 
| +            type: 'WithStatement',
 | 
| +            object: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'x',
 | 
| +                range: [6, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 6 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'AssignmentExpression',
 | 
| +                    operator: '=',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'foo',
 | 
| +                        range: [9, 12],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 9 },
 | 
| +                            end: { line: 1, column: 12 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'bar',
 | 
| +                        range: [15, 18],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 15 },
 | 
| +                            end: { line: 1, column: 18 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [9, 18],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 9 },
 | 
| +                        end: { line: 1, column: 18 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [9, 18],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 9 },
 | 
| +                    end: { line: 1, column: 18 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 18],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 18 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'with (x) foo = bar;': {
 | 
| +            type: 'WithStatement',
 | 
| +            object: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'x',
 | 
| +                range: [6, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 6 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'AssignmentExpression',
 | 
| +                    operator: '=',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'foo',
 | 
| +                        range: [9, 12],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 9 },
 | 
| +                            end: { line: 1, column: 12 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'bar',
 | 
| +                        range: [15, 18],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 15 },
 | 
| +                            end: { line: 1, column: 18 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [9, 18],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 9 },
 | 
| +                        end: { line: 1, column: 18 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [9, 19],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 9 },
 | 
| +                    end: { line: 1, column: 19 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 19],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 19 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'with (x) { foo = bar }': {
 | 
| +            type: 'WithStatement',
 | 
| +            object: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'x',
 | 
| +                range: [6, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 6 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [{
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'AssignmentExpression',
 | 
| +                        operator: '=',
 | 
| +                        left: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'foo',
 | 
| +                            range: [11, 14],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 11 },
 | 
| +                                end: { line: 1, column: 14 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        right: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'bar',
 | 
| +                            range: [17, 20],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 17 },
 | 
| +                                end: { line: 1, column: 20 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        range: [11, 20],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 11 },
 | 
| +                            end: { line: 1, column: 20 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [11, 21],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 11 },
 | 
| +                        end: { line: 1, column: 21 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [9, 22],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 9 },
 | 
| +                    end: { line: 1, column: 22 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 22],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 22 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'switch statement': {
 | 
| +
 | 
| +        'switch (x) {}': {
 | 
| +            type: 'SwitchStatement',
 | 
| +            discriminant: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'x',
 | 
| +                range: [8, 9],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 8 },
 | 
| +                    end: { line: 1, column: 9 }
 | 
| +                }
 | 
| +            },
 | 
| +            cases:[],
 | 
| +            range: [0, 13],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 13 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'switch (answer) { case 42: hi(); break; }': {
 | 
| +            type: 'SwitchStatement',
 | 
| +            discriminant: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'answer',
 | 
| +                range: [8, 14],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 8 },
 | 
| +                    end: { line: 1, column: 14 }
 | 
| +                }
 | 
| +            },
 | 
| +            cases: [{
 | 
| +                type: 'SwitchCase',
 | 
| +                test: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [23, 25],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 23 },
 | 
| +                        end: { line: 1, column: 25 }
 | 
| +                    }
 | 
| +                },
 | 
| +                consequent: [{
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'CallExpression',
 | 
| +                        callee: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'hi',
 | 
| +                            range: [27, 29],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 27 },
 | 
| +                                end: { line: 1, column: 29 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        'arguments': [],
 | 
| +                        range: [27, 31],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 27 },
 | 
| +                            end: { line: 1, column: 31 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [27, 32],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 27 },
 | 
| +                        end: { line: 1, column: 32 }
 | 
| +                    }
 | 
| +                }, {
 | 
| +                    type: 'BreakStatement',
 | 
| +                    label: null,
 | 
| +                    range: [33, 39],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 33 },
 | 
| +                        end: { line: 1, column: 39 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [18, 39],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 18 },
 | 
| +                    end: { line: 1, column: 39 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 41],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 41 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'switch (answer) { case 42: hi(); break; default: break }': {
 | 
| +            type: 'SwitchStatement',
 | 
| +            discriminant: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'answer',
 | 
| +                range: [8, 14],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 8 },
 | 
| +                    end: { line: 1, column: 14 }
 | 
| +                }
 | 
| +            },
 | 
| +            cases: [{
 | 
| +                type: 'SwitchCase',
 | 
| +                test: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 42,
 | 
| +                    raw: '42',
 | 
| +                    range: [23, 25],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 23 },
 | 
| +                        end: { line: 1, column: 25 }
 | 
| +                    }
 | 
| +                },
 | 
| +                consequent: [{
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'CallExpression',
 | 
| +                        callee: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'hi',
 | 
| +                            range: [27, 29],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 27 },
 | 
| +                                end: { line: 1, column: 29 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        'arguments': [],
 | 
| +                        range: [27, 31],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 27 },
 | 
| +                            end: { line: 1, column: 31 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [27, 32],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 27 },
 | 
| +                        end: { line: 1, column: 32 }
 | 
| +                    }
 | 
| +                }, {
 | 
| +                    type: 'BreakStatement',
 | 
| +                    label: null,
 | 
| +                    range: [33, 39],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 33 },
 | 
| +                        end: { line: 1, column: 39 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [18, 39],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 18 },
 | 
| +                    end: { line: 1, column: 39 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'SwitchCase',
 | 
| +                test: null,
 | 
| +                consequent: [{
 | 
| +                    type: 'BreakStatement',
 | 
| +                    label: null,
 | 
| +                    range: [49, 55],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 49 },
 | 
| +                        end: { line: 1, column: 55 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [40, 55],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 40 },
 | 
| +                    end: { line: 1, column: 55 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 56],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 56 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Labelled Statements': {
 | 
| +
 | 
| +        'start: for (;;) break start': {
 | 
| +            type: 'LabeledStatement',
 | 
| +            label: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'start',
 | 
| +                range: [0, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'ForStatement',
 | 
| +                init: null,
 | 
| +                test: null,
 | 
| +                update: null,
 | 
| +                body: {
 | 
| +                    type: 'BreakStatement',
 | 
| +                    label: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'start',
 | 
| +                        range: [22, 27],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 22 },
 | 
| +                            end: { line: 1, column: 27 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [16, 27],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 16 },
 | 
| +                        end: { line: 1, column: 27 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [7, 27],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 7 },
 | 
| +                    end: { line: 1, column: 27 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 27],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 27 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'start: while (true) break start': {
 | 
| +            type: 'LabeledStatement',
 | 
| +            label: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'start',
 | 
| +                range: [0, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'WhileStatement',
 | 
| +                test: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: true,
 | 
| +                    raw: 'true',
 | 
| +                    range: [14, 18],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 14 },
 | 
| +                        end: { line: 1, column: 18 }
 | 
| +                    }
 | 
| +                },
 | 
| +                body: {
 | 
| +                    type: 'BreakStatement',
 | 
| +                    label: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'start',
 | 
| +                        range: [26, 31],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 26 },
 | 
| +                            end: { line: 1, column: 31 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [20, 31],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 20 },
 | 
| +                        end: { line: 1, column: 31 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [7, 31],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 7 },
 | 
| +                    end: { line: 1, column: 31 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 31],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 31 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'throw statement': {
 | 
| +
 | 
| +        'throw x;': {
 | 
| +            type: 'ThrowStatement',
 | 
| +            argument: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'x',
 | 
| +                range: [6, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 6 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 8],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 8 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'throw x * y': {
 | 
| +            type: 'ThrowStatement',
 | 
| +            argument: {
 | 
| +                type: 'BinaryExpression',
 | 
| +                operator: '*',
 | 
| +                left: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [6, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 6 },
 | 
| +                        end: { line: 1, column: 7 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'y',
 | 
| +                    range: [10, 11],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 10 },
 | 
| +                        end: { line: 1, column: 11 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [6, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 6 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 11],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 11 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'throw { message: "Error" }': {
 | 
| +            type: 'ThrowStatement',
 | 
| +            argument: {
 | 
| +                type: 'ObjectExpression',
 | 
| +                properties: [{
 | 
| +                    type: 'Property',
 | 
| +                    key: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'message',
 | 
| +                        range: [8, 15],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 8 },
 | 
| +                            end: { line: 1, column: 15 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    value: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 'Error',
 | 
| +                        raw: '"Error"',
 | 
| +                        range: [17, 24],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 17 },
 | 
| +                            end: { line: 1, column: 24 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    kind: 'init',
 | 
| +                    range: [8, 24],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 24 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [6, 26],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 6 },
 | 
| +                    end: { line: 1, column: 26 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 26],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 26 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'try statement': {
 | 
| +
 | 
| +        'try { } catch (e) { }': {
 | 
| +            type: 'TryStatement',
 | 
| +            block: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [],
 | 
| +                range: [4, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            guardedHandlers: [],
 | 
| +            handlers: [{
 | 
| +                type: 'CatchClause',
 | 
| +                param: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'e',
 | 
| +                    range: [15, 16],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 16 }
 | 
| +                    }
 | 
| +                },
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [],
 | 
| +                    range: [18, 21],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 18 },
 | 
| +                        end: { line: 1, column: 21 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [8, 21],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 8 },
 | 
| +                    end: { line: 1, column: 21 }
 | 
| +                }
 | 
| +            }],
 | 
| +            finalizer: null,
 | 
| +            range: [0, 21],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 21 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'try { } catch (eval) { }': {
 | 
| +            type: 'TryStatement',
 | 
| +            block: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [],
 | 
| +                range: [4, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            guardedHandlers: [],
 | 
| +            handlers: [{
 | 
| +                type: 'CatchClause',
 | 
| +                param: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'eval',
 | 
| +                    range: [15, 19],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 19 }
 | 
| +                    }
 | 
| +                },
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [],
 | 
| +                    range: [21, 24],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 21 },
 | 
| +                        end: { line: 1, column: 24 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [8, 24],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 8 },
 | 
| +                    end: { line: 1, column: 24 }
 | 
| +                }
 | 
| +            }],
 | 
| +            finalizer: null,
 | 
| +            range: [0, 24],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 24 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'try { } catch (arguments) { }': {
 | 
| +            type: 'TryStatement',
 | 
| +            block: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [],
 | 
| +                range: [4, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            guardedHandlers: [],
 | 
| +            handlers: [{
 | 
| +                type: 'CatchClause',
 | 
| +                param: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'arguments',
 | 
| +                    range: [15, 24],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 24 }
 | 
| +                    }
 | 
| +                },
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [],
 | 
| +                    range: [26, 29],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 26 },
 | 
| +                        end: { line: 1, column: 29 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [8, 29],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 8 },
 | 
| +                    end: { line: 1, column: 29 }
 | 
| +                }
 | 
| +            }],
 | 
| +            finalizer: null,
 | 
| +            range: [0, 29],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 29 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'try { } catch (e) { say(e) }': {
 | 
| +            type: 'TryStatement',
 | 
| +            block: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [],
 | 
| +                range: [4, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            guardedHandlers: [],
 | 
| +            handlers: [{
 | 
| +                type: 'CatchClause',
 | 
| +                param: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'e',
 | 
| +                    range: [15, 16],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 16 }
 | 
| +                    }
 | 
| +                },
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [{
 | 
| +                        type: 'ExpressionStatement',
 | 
| +                        expression: {
 | 
| +                            type: 'CallExpression',
 | 
| +                            callee: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'say',
 | 
| +                                range: [20, 23],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 20 },
 | 
| +                                    end: { line: 1, column: 23 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            'arguments': [{
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'e',
 | 
| +                                range: [24, 25],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 24 },
 | 
| +                                    end: { line: 1, column: 25 }
 | 
| +                                }
 | 
| +                            }],
 | 
| +                            range: [20, 26],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 20 },
 | 
| +                                end: { line: 1, column: 26 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        range: [20, 27],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 20 },
 | 
| +                            end: { line: 1, column: 27 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [18, 28],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 18 },
 | 
| +                        end: { line: 1, column: 28 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [8, 28],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 8 },
 | 
| +                    end: { line: 1, column: 28 }
 | 
| +                }
 | 
| +            }],
 | 
| +            finalizer: null,
 | 
| +            range: [0, 28],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 28 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'try { } finally { cleanup(stuff) }': {
 | 
| +            type: 'TryStatement',
 | 
| +            block: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [],
 | 
| +                range: [4, 7],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 7 }
 | 
| +                }
 | 
| +            },
 | 
| +            guardedHandlers: [],
 | 
| +            handlers: [],
 | 
| +            finalizer: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [{
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'CallExpression',
 | 
| +                        callee: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'cleanup',
 | 
| +                            range: [18, 25],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 18 },
 | 
| +                                end: { line: 1, column: 25 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        'arguments': [{
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'stuff',
 | 
| +                            range: [26, 31],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 26 },
 | 
| +                                end: { line: 1, column: 31 }
 | 
| +                            }
 | 
| +                        }],
 | 
| +                        range: [18, 32],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 18 },
 | 
| +                            end: { line: 1, column: 32 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [18, 33],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 18 },
 | 
| +                        end: { line: 1, column: 33 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [16, 34],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 16 },
 | 
| +                    end: { line: 1, column: 34 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 34],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 34 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'try { doThat(); } catch (e) { say(e) }': {
 | 
| +            type: 'TryStatement',
 | 
| +            block: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [{
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'CallExpression',
 | 
| +                        callee: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'doThat',
 | 
| +                            range: [6, 12],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 6 },
 | 
| +                                end: { line: 1, column: 12 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        'arguments': [],
 | 
| +                        range: [6, 14],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 14 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [6, 15],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 6 },
 | 
| +                        end: { line: 1, column: 15 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [4, 17],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 17 }
 | 
| +                }
 | 
| +            },
 | 
| +            guardedHandlers: [],
 | 
| +            handlers: [{
 | 
| +                type: 'CatchClause',
 | 
| +                param: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'e',
 | 
| +                    range: [25, 26],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 25 },
 | 
| +                        end: { line: 1, column: 26 }
 | 
| +                    }
 | 
| +                },
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [{
 | 
| +                        type: 'ExpressionStatement',
 | 
| +                        expression: {
 | 
| +                            type: 'CallExpression',
 | 
| +                            callee: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'say',
 | 
| +                                range: [30, 33],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 30 },
 | 
| +                                    end: { line: 1, column: 33 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            'arguments': [{
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'e',
 | 
| +                                range: [34, 35],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 34 },
 | 
| +                                    end: { line: 1, column: 35 }
 | 
| +                                }
 | 
| +                            }],
 | 
| +                            range: [30, 36],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 30 },
 | 
| +                                end: { line: 1, column: 36 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        range: [30, 37],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 30 },
 | 
| +                            end: { line: 1, column: 37 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [28, 38],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 28 },
 | 
| +                        end: { line: 1, column: 38 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [18, 38],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 18 },
 | 
| +                    end: { line: 1, column: 38 }
 | 
| +                }
 | 
| +            }],
 | 
| +            finalizer: null,
 | 
| +            range: [0, 38],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 38 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'try { doThat(); } catch (e) { say(e) } finally { cleanup(stuff) }': {
 | 
| +            type: 'TryStatement',
 | 
| +            block: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [{
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'CallExpression',
 | 
| +                        callee: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'doThat',
 | 
| +                            range: [6, 12],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 6 },
 | 
| +                                end: { line: 1, column: 12 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        'arguments': [],
 | 
| +                        range: [6, 14],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 14 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [6, 15],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 6 },
 | 
| +                        end: { line: 1, column: 15 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [4, 17],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 17 }
 | 
| +                }
 | 
| +            },
 | 
| +            guardedHandlers: [],
 | 
| +            handlers: [{
 | 
| +                type: 'CatchClause',
 | 
| +                param: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'e',
 | 
| +                    range: [25, 26],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 25 },
 | 
| +                        end: { line: 1, column: 26 }
 | 
| +                    }
 | 
| +                },
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [{
 | 
| +                        type: 'ExpressionStatement',
 | 
| +                        expression: {
 | 
| +                            type: 'CallExpression',
 | 
| +                            callee: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'say',
 | 
| +                                range: [30, 33],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 30 },
 | 
| +                                    end: { line: 1, column: 33 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            'arguments': [{
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'e',
 | 
| +                                range: [34, 35],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 34 },
 | 
| +                                    end: { line: 1, column: 35 }
 | 
| +                                }
 | 
| +                            }],
 | 
| +                            range: [30, 36],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 30 },
 | 
| +                                end: { line: 1, column: 36 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        range: [30, 37],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 30 },
 | 
| +                            end: { line: 1, column: 37 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [28, 38],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 28 },
 | 
| +                        end: { line: 1, column: 38 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [18, 38],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 18 },
 | 
| +                    end: { line: 1, column: 38 }
 | 
| +                }
 | 
| +            }],
 | 
| +            finalizer: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [{
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'CallExpression',
 | 
| +                        callee: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'cleanup',
 | 
| +                            range: [49, 56],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 49 },
 | 
| +                                end: { line: 1, column: 56 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        'arguments': [{
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'stuff',
 | 
| +                            range: [57, 62],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 57 },
 | 
| +                                end: { line: 1, column: 62 }
 | 
| +                            }
 | 
| +                        }],
 | 
| +                        range: [49, 63],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 49 },
 | 
| +                            end: { line: 1, column: 63 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [49, 64],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 49 },
 | 
| +                        end: { line: 1, column: 64 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [47, 65],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 47 },
 | 
| +                    end: { line: 1, column: 65 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 65],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 65 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'debugger statement': {
 | 
| +
 | 
| +        'debugger;': {
 | 
| +            type: 'DebuggerStatement',
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 9 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Function Definition': {
 | 
| +
 | 
| +        'function hello() { sayHi(); }': {
 | 
| +            type: 'FunctionDeclaration',
 | 
| +            id: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'hello',
 | 
| +                range: [9, 14],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 9 },
 | 
| +                    end: { line: 1, column: 14 }
 | 
| +                }
 | 
| +            },
 | 
| +            params: [],
 | 
| +            defaults: [],
 | 
| +            body: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [{
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'CallExpression',
 | 
| +                        callee: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'sayHi',
 | 
| +                            range: [19, 24],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 19 },
 | 
| +                                end: { line: 1, column: 24 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        'arguments': [],
 | 
| +                        range: [19, 26],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 19 },
 | 
| +                            end: { line: 1, column: 26 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [19, 27],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 19 },
 | 
| +                        end: { line: 1, column: 27 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [17, 29],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 17 },
 | 
| +                    end: { line: 1, column: 29 }
 | 
| +                }
 | 
| +            },
 | 
| +            rest: null,
 | 
| +            generator: false,
 | 
| +            expression: false,
 | 
| +            range: [0, 29],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 29 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'function eval() { }': {
 | 
| +            type: 'FunctionDeclaration',
 | 
| +            id: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'eval',
 | 
| +                range: [9, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 9 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            },
 | 
| +            params: [],
 | 
| +            defaults: [],
 | 
| +            body: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [],
 | 
| +                range: [16, 19],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 16 },
 | 
| +                    end: { line: 1, column: 19 }
 | 
| +                }
 | 
| +            },
 | 
| +            rest: null,
 | 
| +            generator: false,
 | 
| +            expression: false,
 | 
| +            range: [0, 19],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 19 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'function arguments() { }': {
 | 
| +            type: 'FunctionDeclaration',
 | 
| +            id: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'arguments',
 | 
| +                range: [9, 18],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 9 },
 | 
| +                    end: { line: 1, column: 18 }
 | 
| +                }
 | 
| +            },
 | 
| +            params: [],
 | 
| +            defaults: [],
 | 
| +            body: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [],
 | 
| +                range: [21, 24],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 21 },
 | 
| +                    end: { line: 1, column: 24 }
 | 
| +                }
 | 
| +            },
 | 
| +            rest: null,
 | 
| +            generator: false,
 | 
| +            expression: false,
 | 
| +            range: [0, 24],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 24 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'function test(t, t) { }': {
 | 
| +            type: 'FunctionDeclaration',
 | 
| +            id: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'test',
 | 
| +                range: [9, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 9 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            },
 | 
| +            params: [{
 | 
| +                type: 'Identifier',
 | 
| +                name: 't',
 | 
| +                range: [14, 15],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 15 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Identifier',
 | 
| +                name: 't',
 | 
| +                range: [17, 18],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 17 },
 | 
| +                    end: { line: 1, column: 18 }
 | 
| +                }
 | 
| +            }],
 | 
| +            defaults: [],
 | 
| +            body: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [],
 | 
| +                range: [20, 23],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 20 },
 | 
| +                    end: { line: 1, column: 23 }
 | 
| +                }
 | 
| +            },
 | 
| +            rest: null,
 | 
| +            generator: false,
 | 
| +            expression: false,
 | 
| +            range: [0, 23],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 23 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '(function test(t, t) { })': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'FunctionExpression',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'test',
 | 
| +                    range: [10, 14],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 10 },
 | 
| +                        end: { line: 1, column: 14 }
 | 
| +                    }
 | 
| +                },
 | 
| +                params: [{
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 't',
 | 
| +                    range: [15, 16],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 16 }
 | 
| +                    }
 | 
| +                }, {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 't',
 | 
| +                    range: [18, 19],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 18 },
 | 
| +                        end: { line: 1, column: 19 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                defaults: [],
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [],
 | 
| +                    range: [21, 24],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 21 },
 | 
| +                        end: { line: 1, column: 24 }
 | 
| +                    }
 | 
| +                },
 | 
| +                rest: null,
 | 
| +                generator: false,
 | 
| +                expression: false,
 | 
| +                range: [1, 24],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 1 },
 | 
| +                    end: { line: 1, column: 24 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 25],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 25 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'function eval() { function inner() { "use strict" } }': {
 | 
| +            type: 'FunctionDeclaration',
 | 
| +            id: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'eval',
 | 
| +                range: [9, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 9 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            },
 | 
| +            params: [],
 | 
| +            defaults: [],
 | 
| +            body: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [{
 | 
| +                    type: 'FunctionDeclaration',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'inner',
 | 
| +                        range: [27, 32],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 27 },
 | 
| +                            end: { line: 1, column: 32 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    params: [],
 | 
| +                    defaults: [],
 | 
| +                    body: {
 | 
| +                        type: 'BlockStatement',
 | 
| +                        body: [{
 | 
| +                            type: 'ExpressionStatement',
 | 
| +                            expression: {
 | 
| +                                type: 'Literal',
 | 
| +                                value: 'use strict',
 | 
| +                                raw: '\"use strict\"',
 | 
| +                                range: [37, 49],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 37 },
 | 
| +                                    end: { line: 1, column: 49 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            range: [37, 50],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 37 },
 | 
| +                                end: { line: 1, column: 50 }
 | 
| +                            }
 | 
| +                        }],
 | 
| +                        range: [35, 51],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 35 },
 | 
| +                            end: { line: 1, column: 51 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    rest: null,
 | 
| +                    generator: false,
 | 
| +                    expression: false,
 | 
| +                    range: [18, 51],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 18 },
 | 
| +                        end: { line: 1, column: 51 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [16, 53],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 16 },
 | 
| +                    end: { line: 1, column: 53 }
 | 
| +                }
 | 
| +            },
 | 
| +            rest: null,
 | 
| +            generator: false,
 | 
| +            expression: false,
 | 
| +            range: [0, 53],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 53 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'function hello(a) { sayHi(); }': {
 | 
| +            type: 'FunctionDeclaration',
 | 
| +            id: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'hello',
 | 
| +                range: [9, 14],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 9 },
 | 
| +                    end: { line: 1, column: 14 }
 | 
| +                }
 | 
| +            },
 | 
| +            params: [{
 | 
| +                type: 'Identifier',
 | 
| +                name: 'a',
 | 
| +                range: [15, 16],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 15 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            }],
 | 
| +            defaults: [],
 | 
| +            body: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [{
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'CallExpression',
 | 
| +                        callee: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'sayHi',
 | 
| +                            range: [20, 25],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 20 },
 | 
| +                                end: { line: 1, column: 25 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        'arguments': [],
 | 
| +                        range: [20, 27],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 20 },
 | 
| +                            end: { line: 1, column: 27 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [20, 28],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 20 },
 | 
| +                        end: { line: 1, column: 28 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [18, 30],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 18 },
 | 
| +                    end: { line: 1, column: 30 }
 | 
| +                }
 | 
| +            },
 | 
| +            rest: null,
 | 
| +            generator: false,
 | 
| +            expression: false,
 | 
| +            range: [0, 30],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 30 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'function hello(a, b) { sayHi(); }': {
 | 
| +            type: 'FunctionDeclaration',
 | 
| +            id: {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'hello',
 | 
| +                range: [9, 14],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 9 },
 | 
| +                    end: { line: 1, column: 14 }
 | 
| +                }
 | 
| +            },
 | 
| +            params: [{
 | 
| +                type: 'Identifier',
 | 
| +                name: 'a',
 | 
| +                range: [15, 16],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 15 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'Identifier',
 | 
| +                name: 'b',
 | 
| +                range: [18, 19],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 18 },
 | 
| +                    end: { line: 1, column: 19 }
 | 
| +                }
 | 
| +            }],
 | 
| +            defaults: [],
 | 
| +            body: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [{
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'CallExpression',
 | 
| +                        callee: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'sayHi',
 | 
| +                            range: [23, 28],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 23 },
 | 
| +                                end: { line: 1, column: 28 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        'arguments': [],
 | 
| +                        range: [23, 30],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 23 },
 | 
| +                            end: { line: 1, column: 30 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [23, 31],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 23 },
 | 
| +                        end: { line: 1, column: 31 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [21, 33],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 21 },
 | 
| +                    end: { line: 1, column: 33 }
 | 
| +                }
 | 
| +            },
 | 
| +            rest: null,
 | 
| +            generator: false,
 | 
| +            expression: false,
 | 
| +            range: [0, 33],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 33 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'var hi = function() { sayHi() };': {
 | 
| +            type: 'VariableDeclaration',
 | 
| +            declarations: [{
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'hi',
 | 
| +                    range: [4, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: {
 | 
| +                    type: 'FunctionExpression',
 | 
| +                    id: null,
 | 
| +                    params: [],
 | 
| +                    defaults: [],
 | 
| +                    body: {
 | 
| +                        type: 'BlockStatement',
 | 
| +                        body: [{
 | 
| +                            type: 'ExpressionStatement',
 | 
| +                            expression: {
 | 
| +                                type: 'CallExpression',
 | 
| +                                callee: {
 | 
| +                                    type: 'Identifier',
 | 
| +                                    name: 'sayHi',
 | 
| +                                    range: [22, 27],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 22 },
 | 
| +                                        end: { line: 1, column: 27 }
 | 
| +                                    }
 | 
| +                                },
 | 
| +                                'arguments': [],
 | 
| +                                range: [22, 29],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 22 },
 | 
| +                                    end: { line: 1, column: 29 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            range: [22, 30],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 22 },
 | 
| +                                end: { line: 1, column: 30 }
 | 
| +                            }
 | 
| +                        }],
 | 
| +                        range: [20, 31],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 20 },
 | 
| +                            end: { line: 1, column: 31 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    rest: null,
 | 
| +                    generator: false,
 | 
| +                    expression: false,
 | 
| +                    range: [9, 31],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 9 },
 | 
| +                        end: { line: 1, column: 31 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [4, 31],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 31 }
 | 
| +                }
 | 
| +            }],
 | 
| +            kind: 'var',
 | 
| +            range: [0, 32],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 32 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'var hi = function eval() { };': {
 | 
| +            type: 'VariableDeclaration',
 | 
| +            declarations: [{
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'hi',
 | 
| +                    range: [4, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: {
 | 
| +                    type: 'FunctionExpression',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'eval',
 | 
| +                        range: [18, 22],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 18 },
 | 
| +                            end: { line: 1, column: 22 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    params: [],
 | 
| +                    defaults: [],
 | 
| +                    body: {
 | 
| +                        type: 'BlockStatement',
 | 
| +                        body: [],
 | 
| +                        range: [25, 28],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 25 },
 | 
| +                            end: { line: 1, column: 28 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    rest: null,
 | 
| +                    generator: false,
 | 
| +                    expression: false,
 | 
| +                    range: [9, 28],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 9 },
 | 
| +                        end: { line: 1, column: 28 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [4, 28],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 28 }
 | 
| +                }
 | 
| +            }],
 | 
| +            kind: 'var',
 | 
| +            range: [0, 29],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 29 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'var hi = function arguments() { };': {
 | 
| +            type: 'VariableDeclaration',
 | 
| +            declarations: [{
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'hi',
 | 
| +                    range: [4, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: {
 | 
| +                    type: 'FunctionExpression',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'arguments',
 | 
| +                        range: [18, 27],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 18 },
 | 
| +                            end: { line: 1, column: 27 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    params: [],
 | 
| +                    defaults: [],
 | 
| +                    body: {
 | 
| +                        type: 'BlockStatement',
 | 
| +                        body: [],
 | 
| +                        range: [30, 33],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 30 },
 | 
| +                            end: { line: 1, column: 33 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    rest: null,
 | 
| +                    generator: false,
 | 
| +                    expression: false,
 | 
| +                    range: [9, 33],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 9 },
 | 
| +                        end: { line: 1, column: 33 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [4, 33],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 33 }
 | 
| +                }
 | 
| +            }],
 | 
| +            kind: 'var',
 | 
| +            range: [0, 34],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 34 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'var hello = function hi() { sayHi() };': {
 | 
| +            type: 'VariableDeclaration',
 | 
| +            declarations: [{
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'hello',
 | 
| +                    range: [4, 9],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 9 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: {
 | 
| +                    type: 'FunctionExpression',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'hi',
 | 
| +                        range: [21, 23],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 21 },
 | 
| +                            end: { line: 1, column: 23 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    params: [],
 | 
| +                    defaults: [],
 | 
| +                    body: {
 | 
| +                        type: 'BlockStatement',
 | 
| +                        body: [{
 | 
| +                            type: 'ExpressionStatement',
 | 
| +                            expression: {
 | 
| +                                type: 'CallExpression',
 | 
| +                                callee: {
 | 
| +                                    type: 'Identifier',
 | 
| +                                    name: 'sayHi',
 | 
| +                                    range: [28, 33],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 28 },
 | 
| +                                        end: { line: 1, column: 33 }
 | 
| +                                    }
 | 
| +                                },
 | 
| +                                'arguments': [],
 | 
| +                                range: [28, 35],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 28 },
 | 
| +                                    end: { line: 1, column: 35 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            range: [28, 36],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 28 },
 | 
| +                                end: { line: 1, column: 36 }
 | 
| +                            }
 | 
| +                        }],
 | 
| +                        range: [26, 37],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 26 },
 | 
| +                            end: { line: 1, column: 37 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    rest: null,
 | 
| +                    generator: false,
 | 
| +                    expression: false,
 | 
| +                    range: [12, 37],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 12 },
 | 
| +                        end: { line: 1, column: 37 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [4, 37],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 37 }
 | 
| +                }
 | 
| +            }],
 | 
| +            kind: 'var',
 | 
| +            range: [0, 38],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 38 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '(function(){})': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'FunctionExpression',
 | 
| +                id: null,
 | 
| +                params: [],
 | 
| +                defaults: [],
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [],
 | 
| +                    range: [11, 13],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 11 },
 | 
| +                        end: { line: 1, column: 13 }
 | 
| +                    }
 | 
| +                },
 | 
| +                rest: null,
 | 
| +                generator: false,
 | 
| +                expression: false,
 | 
| +                range: [1, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 1 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 14],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 14 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Automatic semicolon insertion': {
 | 
| +
 | 
| +        '{ x\n++y }': {
 | 
| +            type: 'BlockStatement',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [2, 3],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 2 },
 | 
| +                        end: { line: 1, column: 3 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [2, 4],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 2 },
 | 
| +                    end: { line: 2, column: 0 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'UpdateExpression',
 | 
| +                    operator: '++',
 | 
| +                    argument: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [6, 7],
 | 
| +                        loc: {
 | 
| +                            start: { line: 2, column: 2 },
 | 
| +                            end: { line: 2, column: 3 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    prefix: true,
 | 
| +                    range: [4, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 2, column: 0 },
 | 
| +                        end: { line: 2, column: 3 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [4, 8],
 | 
| +                loc: {
 | 
| +                    start: { line: 2, column: 0 },
 | 
| +                    end: { line: 2, column: 4 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 2, column: 5 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '{ x\n--y }': {
 | 
| +            type: 'BlockStatement',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [2, 3],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 2 },
 | 
| +                        end: { line: 1, column: 3 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [2, 4],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 2 },
 | 
| +                    end: { line: 2, column: 0 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'UpdateExpression',
 | 
| +                    operator: '--',
 | 
| +                    argument: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [6, 7],
 | 
| +                        loc: {
 | 
| +                            start: { line: 2, column: 2 },
 | 
| +                            end: { line: 2, column: 3 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    prefix: true,
 | 
| +                    range: [4, 7],
 | 
| +                    loc: {
 | 
| +                        start: { line: 2, column: 0 },
 | 
| +                        end: { line: 2, column: 3 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [4, 8],
 | 
| +                loc: {
 | 
| +                    start: { line: 2, column: 0 },
 | 
| +                    end: { line: 2, column: 4 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 9],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 2, column: 5 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'var x /* comment */;': {
 | 
| +            type: 'VariableDeclaration',
 | 
| +            declarations: [{
 | 
| +                type: 'VariableDeclarator',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'x',
 | 
| +                    range: [4, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 4 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                init: null,
 | 
| +                range: [4, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 4 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            }],
 | 
| +            kind: 'var',
 | 
| +            range: [0, 20],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 20 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '{ var x = 14, y = 3\nz; }': {
 | 
| +            type: 'BlockStatement',
 | 
| +            body: [{
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [6, 7],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 6 },
 | 
| +                            end: { line: 1, column: 7 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 14,
 | 
| +                        raw: '14',
 | 
| +                        range: [10, 12],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 10 },
 | 
| +                            end: { line: 1, column: 12 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [6, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 6 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                }, {
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'y',
 | 
| +                        range: [14, 15],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 14 },
 | 
| +                            end: { line: 1, column: 15 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 3,
 | 
| +                        raw: '3',
 | 
| +                        range: [18, 19],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 18 },
 | 
| +                            end: { line: 1, column: 19 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [14, 19],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 14 },
 | 
| +                        end: { line: 1, column: 19 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'var',
 | 
| +                range: [2, 20],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 2 },
 | 
| +                    end: { line: 2, column: 0 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'z',
 | 
| +                    range: [20, 21],
 | 
| +                    loc: {
 | 
| +                        start: { line: 2, column: 0 },
 | 
| +                        end: { line: 2, column: 1 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [20, 22],
 | 
| +                loc: {
 | 
| +                    start: { line: 2, column: 0 },
 | 
| +                    end: { line: 2, column: 2 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 24],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 2, column: 4 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'while (true) { continue\nthere; }': {
 | 
| +            type: 'WhileStatement',
 | 
| +            test: {
 | 
| +                type: 'Literal',
 | 
| +                value: true,
 | 
| +                raw: 'true',
 | 
| +                range: [7, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 7 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [{
 | 
| +                    type: 'ContinueStatement',
 | 
| +                    label: null,
 | 
| +                    range: [15, 23],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 23 }
 | 
| +                    }
 | 
| +                }, {
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'there',
 | 
| +                        range: [24, 29],
 | 
| +                        loc: {
 | 
| +                            start: { line: 2, column: 0 },
 | 
| +                            end: { line: 2, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [24, 30],
 | 
| +                    loc: {
 | 
| +                        start: { line: 2, column: 0 },
 | 
| +                        end: { line: 2, column: 6 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [13, 32],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 13 },
 | 
| +                    end: { line: 2, column: 8 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 32],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 2, column: 8 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'while (true) { continue // Comment\nthere; }': {
 | 
| +            type: 'WhileStatement',
 | 
| +            test: {
 | 
| +                type: 'Literal',
 | 
| +                value: true,
 | 
| +                raw: 'true',
 | 
| +                range: [7, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 7 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [{
 | 
| +                    type: 'ContinueStatement',
 | 
| +                    label: null,
 | 
| +                    range: [15, 23],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 23 }
 | 
| +                    }
 | 
| +                }, {
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'there',
 | 
| +                        range: [35, 40],
 | 
| +                        loc: {
 | 
| +                            start: { line: 2, column: 0 },
 | 
| +                            end: { line: 2, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [35, 41],
 | 
| +                    loc: {
 | 
| +                        start: { line: 2, column: 0 },
 | 
| +                        end: { line: 2, column: 6 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [13, 43],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 13 },
 | 
| +                    end: { line: 2, column: 8 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 43],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 2, column: 8 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'while (true) { continue /* Multiline\nComment */there; }': {
 | 
| +            type: 'WhileStatement',
 | 
| +            test: {
 | 
| +                type: 'Literal',
 | 
| +                value: true,
 | 
| +                raw: 'true',
 | 
| +                range: [7, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 7 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [{
 | 
| +                    type: 'ContinueStatement',
 | 
| +                    label: null,
 | 
| +                    range: [15, 23],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 23 }
 | 
| +                    }
 | 
| +                }, {
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'there',
 | 
| +                        range: [47, 52],
 | 
| +                        loc: {
 | 
| +                            start: { line: 2, column: 10 },
 | 
| +                            end: { line: 2, column: 15 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [47, 53],
 | 
| +                    loc: {
 | 
| +                        start: { line: 2, column: 10 },
 | 
| +                        end: { line: 2, column: 16 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [13, 55],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 13 },
 | 
| +                    end: { line: 2, column: 18 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 55],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 2, column: 18 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'while (true) { break\nthere; }': {
 | 
| +            type: 'WhileStatement',
 | 
| +            test: {
 | 
| +                type: 'Literal',
 | 
| +                value: true,
 | 
| +                raw: 'true',
 | 
| +                range: [7, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 7 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [{
 | 
| +                    type: 'BreakStatement',
 | 
| +                    label: null,
 | 
| +                    range: [15, 20],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 20 }
 | 
| +                    }
 | 
| +                }, {
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'there',
 | 
| +                        range: [21, 26],
 | 
| +                        loc: {
 | 
| +                            start: { line: 2, column: 0 },
 | 
| +                            end: { line: 2, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [21, 27],
 | 
| +                    loc: {
 | 
| +                        start: { line: 2, column: 0 },
 | 
| +                        end: { line: 2, column: 6 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [13, 29],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 13 },
 | 
| +                    end: { line: 2, column: 8 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 29],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 2, column: 8 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'while (true) { break // Comment\nthere; }': {
 | 
| +            type: 'WhileStatement',
 | 
| +            test: {
 | 
| +                type: 'Literal',
 | 
| +                value: true,
 | 
| +                raw: 'true',
 | 
| +                range: [7, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 7 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [{
 | 
| +                    type: 'BreakStatement',
 | 
| +                    label: null,
 | 
| +                    range: [15, 20],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 20 }
 | 
| +                    }
 | 
| +                }, {
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'there',
 | 
| +                        range: [32, 37],
 | 
| +                        loc: {
 | 
| +                            start: { line: 2, column: 0 },
 | 
| +                            end: { line: 2, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [32, 38],
 | 
| +                    loc: {
 | 
| +                        start: { line: 2, column: 0 },
 | 
| +                        end: { line: 2, column: 6 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [13, 40],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 13 },
 | 
| +                    end: { line: 2, column: 8 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 40],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 2, column: 8 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'while (true) { break /* Multiline\nComment */there; }': {
 | 
| +            type: 'WhileStatement',
 | 
| +            test: {
 | 
| +                type: 'Literal',
 | 
| +                value: true,
 | 
| +                raw: 'true',
 | 
| +                range: [7, 11],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 7 },
 | 
| +                    end: { line: 1, column: 11 }
 | 
| +                }
 | 
| +            },
 | 
| +            body: {
 | 
| +                type: 'BlockStatement',
 | 
| +                body: [{
 | 
| +                    type: 'BreakStatement',
 | 
| +                    label: null,
 | 
| +                    range: [15, 20],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 20 }
 | 
| +                    }
 | 
| +                }, {
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'there',
 | 
| +                        range: [44, 49],
 | 
| +                        loc: {
 | 
| +                            start: { line: 2, column: 10 },
 | 
| +                            end: { line: 2, column: 15 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [44, 50],
 | 
| +                    loc: {
 | 
| +                        start: { line: 2, column: 10 },
 | 
| +                        end: { line: 2, column: 16 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                range: [13, 52],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 13 },
 | 
| +                    end: { line: 2, column: 18 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 52],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 2, column: 18 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '(function(){ return\nx; })': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'FunctionExpression',
 | 
| +                id: null,
 | 
| +                params: [],
 | 
| +                defaults: [],
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [
 | 
| +                        {
 | 
| +                            type: 'ReturnStatement',
 | 
| +                            argument: null,
 | 
| +                            range: [13, 19],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 13 },
 | 
| +                                end: { line: 1, column: 19 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        {
 | 
| +                            type: 'ExpressionStatement',
 | 
| +                            expression: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'x',
 | 
| +                                range: [20, 21],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 2, column: 0 },
 | 
| +                                    end: { line: 2, column: 1 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            range: [20, 22],
 | 
| +                            loc: {
 | 
| +                                start: { line: 2, column: 0 },
 | 
| +                                end: { line: 2, column: 2 }
 | 
| +                            }
 | 
| +                        }
 | 
| +                    ],
 | 
| +                    range: [11, 24],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 11 },
 | 
| +                        end: { line: 2, column: 4 }
 | 
| +                    }
 | 
| +                },
 | 
| +                rest: null,
 | 
| +                generator: false,
 | 
| +                expression: false,
 | 
| +                range: [1, 24],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 1 },
 | 
| +                    end: { line: 2, column: 4 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 25],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 2, column: 5 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '(function(){ return // Comment\nx; })': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'FunctionExpression',
 | 
| +                id: null,
 | 
| +                params: [],
 | 
| +                defaults: [],
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [
 | 
| +                        {
 | 
| +                            type: 'ReturnStatement',
 | 
| +                            argument: null,
 | 
| +                            range: [13, 19],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 13 },
 | 
| +                                end: { line: 1, column: 19 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        {
 | 
| +                            type: 'ExpressionStatement',
 | 
| +                            expression: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'x',
 | 
| +                                range: [31, 32],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 2, column: 0 },
 | 
| +                                    end: { line: 2, column: 1 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            range: [31, 33],
 | 
| +                            loc: {
 | 
| +                                start: { line: 2, column: 0 },
 | 
| +                                end: { line: 2, column: 2 }
 | 
| +                            }
 | 
| +                        }
 | 
| +                    ],
 | 
| +                    range: [11, 35],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 11 },
 | 
| +                        end: { line: 2, column: 4 }
 | 
| +                    }
 | 
| +                },
 | 
| +                rest: null,
 | 
| +                generator: false,
 | 
| +                expression: false,
 | 
| +                range: [1, 35],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 1 },
 | 
| +                    end: { line: 2, column: 4 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 36],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 2, column: 5 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '(function(){ return/* Multiline\nComment */x; })': {
 | 
| +            type: 'ExpressionStatement',
 | 
| +            expression: {
 | 
| +                type: 'FunctionExpression',
 | 
| +                id: null,
 | 
| +                params: [],
 | 
| +                defaults: [],
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [
 | 
| +                        {
 | 
| +                            type: 'ReturnStatement',
 | 
| +                            argument: null,
 | 
| +                            range: [13, 19],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 13 },
 | 
| +                                end: { line: 1, column: 19 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        {
 | 
| +                            type: 'ExpressionStatement',
 | 
| +                            expression: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'x',
 | 
| +                                range: [42, 43],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 2, column: 10 },
 | 
| +                                    end: { line: 2, column: 11 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            range: [42, 44],
 | 
| +                            loc: {
 | 
| +                                start: { line: 2, column: 10 },
 | 
| +                                end: { line: 2, column: 12 }
 | 
| +                            }
 | 
| +                        }
 | 
| +                    ],
 | 
| +                    range: [11, 46],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 11 },
 | 
| +                        end: { line: 2, column: 14 }
 | 
| +                    }
 | 
| +                },
 | 
| +                rest: null,
 | 
| +                generator: false,
 | 
| +                expression: false,
 | 
| +                range: [1, 46],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 1 },
 | 
| +                    end: { line: 2, column: 14 }
 | 
| +                }
 | 
| +            },
 | 
| +            range: [0, 47],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 2, column: 15 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '{ throw error\nerror; }': {
 | 
| +            type: 'BlockStatement',
 | 
| +            body: [{
 | 
| +                type: 'ThrowStatement',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'error',
 | 
| +                    range: [8, 13],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 13 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [2, 14],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 2 },
 | 
| +                    end: { line: 2, column: 0 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'error',
 | 
| +                    range: [14, 19],
 | 
| +                    loc: {
 | 
| +                        start: { line: 2, column: 0 },
 | 
| +                        end: { line: 2, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [14, 20],
 | 
| +                loc: {
 | 
| +                    start: { line: 2, column: 0 },
 | 
| +                    end: { line: 2, column: 6 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 22],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 2, column: 8 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '{ throw error// Comment\nerror; }': {
 | 
| +            type: 'BlockStatement',
 | 
| +            body: [{
 | 
| +                type: 'ThrowStatement',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'error',
 | 
| +                    range: [8, 13],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 13 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [2, 24],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 2 },
 | 
| +                    end: { line: 2, column: 0 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'error',
 | 
| +                    range: [24, 29],
 | 
| +                    loc: {
 | 
| +                        start: { line: 2, column: 0 },
 | 
| +                        end: { line: 2, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [24, 30],
 | 
| +                loc: {
 | 
| +                    start: { line: 2, column: 0 },
 | 
| +                    end: { line: 2, column: 6 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 32],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 2, column: 8 }
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        '{ throw error/* Multiline\nComment */error; }': {
 | 
| +            type: 'BlockStatement',
 | 
| +            body: [{
 | 
| +                type: 'ThrowStatement',
 | 
| +                argument: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'error',
 | 
| +                    range: [8, 13],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 8 },
 | 
| +                        end: { line: 1, column: 13 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [2, 36],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 2 },
 | 
| +                    end: { line: 2, column: 10 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'error',
 | 
| +                    range: [36, 41],
 | 
| +                    loc: {
 | 
| +                        start: { line: 2, column: 10 },
 | 
| +                        end: { line: 2, column: 15 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [36, 42],
 | 
| +                loc: {
 | 
| +                    start: { line: 2, column: 10 },
 | 
| +                    end: { line: 2, column: 16 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 44],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 2, column: 18 }
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Source elements': {
 | 
| +
 | 
| +        '': {
 | 
| +            type: 'Program',
 | 
| +            body: [],
 | 
| +            range: [0, 0],
 | 
| +            loc: {
 | 
| +                start: { line: 0, column: 0 },
 | 
| +                end: { line: 0, column: 0 }
 | 
| +            },
 | 
| +            tokens: []
 | 
| +        }
 | 
| +    },
 | 
| +
 | 
| +    'Invalid syntax': {
 | 
| +
 | 
| +        '{': {
 | 
| +            index: 1,
 | 
| +            lineNumber: 1,
 | 
| +            column: 2,
 | 
| +            message: 'Error: Line 1: Unexpected end of input'
 | 
| +        },
 | 
| +
 | 
| +        '}': {
 | 
| +            index: 0,
 | 
| +            lineNumber: 1,
 | 
| +            column: 1,
 | 
| +            message: 'Error: Line 1: Unexpected token }'
 | 
| +        },
 | 
| +
 | 
| +        '3ea': {
 | 
| +            index: 2,
 | 
| +            lineNumber: 1,
 | 
| +            column: 3,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '3in []': {
 | 
| +            index: 1,
 | 
| +            lineNumber: 1,
 | 
| +            column: 2,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '3e': {
 | 
| +            index: 2,
 | 
| +            lineNumber: 1,
 | 
| +            column: 3,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '3e+': {
 | 
| +            index: 3,
 | 
| +            lineNumber: 1,
 | 
| +            column: 4,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '3e-': {
 | 
| +            index: 3,
 | 
| +            lineNumber: 1,
 | 
| +            column: 4,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '3x': {
 | 
| +            index: 1,
 | 
| +            lineNumber: 1,
 | 
| +            column: 2,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '3x0': {
 | 
| +            index: 1,
 | 
| +            lineNumber: 1,
 | 
| +            column: 2,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '0x': {
 | 
| +            index: 2,
 | 
| +            lineNumber: 1,
 | 
| +            column: 3,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '09': {
 | 
| +            index: 1,
 | 
| +            lineNumber: 1,
 | 
| +            column: 2,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '018': {
 | 
| +            index: 2,
 | 
| +            lineNumber: 1,
 | 
| +            column: 3,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '01a': {
 | 
| +            index: 2,
 | 
| +            lineNumber: 1,
 | 
| +            column: 3,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '3in[]': {
 | 
| +            index: 1,
 | 
| +            lineNumber: 1,
 | 
| +            column: 2,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '0x3in[]': {
 | 
| +            index: 3,
 | 
| +            lineNumber: 1,
 | 
| +            column: 4,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '"Hello\nWorld"': {
 | 
| +            index: 7,
 | 
| +            lineNumber: 1,
 | 
| +            column: 8,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        'x\\': {
 | 
| +            index: 2,
 | 
| +            lineNumber: 1,
 | 
| +            column: 3,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        'x\\u005c': {
 | 
| +            index: 7,
 | 
| +            lineNumber: 1,
 | 
| +            column: 8,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        'x\\u002a': {
 | 
| +            index: 7,
 | 
| +            lineNumber: 1,
 | 
| +            column: 8,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        'var x = /(s/g': {
 | 
| +            index: 13,
 | 
| +            lineNumber: 1,
 | 
| +            column: 14,
 | 
| +            message: 'Error: Line 1: Invalid regular expression'
 | 
| +        },
 | 
| +
 | 
| +        '/': {
 | 
| +            index: 1,
 | 
| +            lineNumber: 1,
 | 
| +            column: 2,
 | 
| +            message: 'Error: Line 1: Invalid regular expression: missing /'
 | 
| +        },
 | 
| +
 | 
| +        '/test': {
 | 
| +            index: 5,
 | 
| +            lineNumber: 1,
 | 
| +            column: 6,
 | 
| +            message: 'Error: Line 1: Invalid regular expression: missing /'
 | 
| +        },
 | 
| +
 | 
| +        'var x = /[a-z]/\\ux': {
 | 
| +            index: 18,
 | 
| +            lineNumber: 1,
 | 
| +            column: 19,
 | 
| +            message: 'Error: Line 1: Invalid regular expression'
 | 
| +        },
 | 
| +
 | 
| +        '3 = 4': {
 | 
| +            index: 1,
 | 
| +            lineNumber: 1,
 | 
| +            column: 2,
 | 
| +            message: 'Error: Line 1: Invalid left-hand side in assignment'
 | 
| +        },
 | 
| +
 | 
| +        'func() = 4': {
 | 
| +            index: 6,
 | 
| +            lineNumber: 1,
 | 
| +            column: 7,
 | 
| +            message: 'Error: Line 1: Invalid left-hand side in assignment'
 | 
| +        },
 | 
| +
 | 
| +        '(1 + 1) = 10': {
 | 
| +            index: 7,
 | 
| +            lineNumber: 1,
 | 
| +            column: 8,
 | 
| +            message: 'Error: Line 1: Invalid left-hand side in assignment'
 | 
| +        },
 | 
| +
 | 
| +        '1++': {
 | 
| +            index: 1,
 | 
| +            lineNumber: 1,
 | 
| +            column: 2,
 | 
| +            message: 'Error: Line 1: Invalid left-hand side in assignment'
 | 
| +        },
 | 
| +
 | 
| +        '1--': {
 | 
| +            index: 1,
 | 
| +            lineNumber: 1,
 | 
| +            column: 2,
 | 
| +            message: 'Error: Line 1: Invalid left-hand side in assignment'
 | 
| +        },
 | 
| +
 | 
| +        '++1': {
 | 
| +            index: 3,
 | 
| +            lineNumber: 1,
 | 
| +            column: 4,
 | 
| +            message: 'Error: Line 1: Invalid left-hand side in assignment'
 | 
| +        },
 | 
| +
 | 
| +        '--1': {
 | 
| +            index: 3,
 | 
| +            lineNumber: 1,
 | 
| +            column: 4,
 | 
| +            message: 'Error: Line 1: Invalid left-hand side in assignment'
 | 
| +        },
 | 
| +
 | 
| +        'for((1 + 1) in list) process(x);': {
 | 
| +            index: 11,
 | 
| +            lineNumber: 1,
 | 
| +            column: 12,
 | 
| +            message: 'Error: Line 1: Invalid left-hand side in for-in'
 | 
| +        },
 | 
| +
 | 
| +        '[': {
 | 
| +            index: 1,
 | 
| +            lineNumber: 1,
 | 
| +            column: 2,
 | 
| +            message: 'Error: Line 1: Unexpected end of input'
 | 
| +        },
 | 
| +
 | 
| +        '[,': {
 | 
| +            index: 2,
 | 
| +            lineNumber: 1,
 | 
| +            column: 3,
 | 
| +            message: 'Error: Line 1: Unexpected end of input'
 | 
| +        },
 | 
| +
 | 
| +        '1 + {': {
 | 
| +            index: 5,
 | 
| +            lineNumber: 1,
 | 
| +            column: 6,
 | 
| +            message: 'Error: Line 1: Unexpected end of input'
 | 
| +        },
 | 
| +
 | 
| +        '1 + { t:t ': {
 | 
| +            index: 10,
 | 
| +            lineNumber: 1,
 | 
| +            column: 11,
 | 
| +            message: 'Error: Line 1: Unexpected end of input'
 | 
| +        },
 | 
| +
 | 
| +        '1 + { t:t,': {
 | 
| +            index: 10,
 | 
| +            lineNumber: 1,
 | 
| +            column: 11,
 | 
| +            message: 'Error: Line 1: Unexpected end of input'
 | 
| +        },
 | 
| +
 | 
| +        'var x = /\n/': {
 | 
| +            index: 10,
 | 
| +            lineNumber: 1,
 | 
| +            column: 11,
 | 
| +            message: 'Error: Line 1: Invalid regular expression: missing /'
 | 
| +        },
 | 
| +
 | 
| +        'var x = "\n': {
 | 
| +            index: 10,
 | 
| +            lineNumber: 1,
 | 
| +            column: 11,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        'var if = 42': {
 | 
| +            index: 4,
 | 
| +            lineNumber: 1,
 | 
| +            column: 5,
 | 
| +            message: 'Error: Line 1: Unexpected token if'
 | 
| +        },
 | 
| +
 | 
| +        'i + 2 = 42': {
 | 
| +            index: 5,
 | 
| +            lineNumber: 1,
 | 
| +            column: 6,
 | 
| +            message: 'Error: Line 1: Invalid left-hand side in assignment'
 | 
| +        },
 | 
| +
 | 
| +        '+i = 42': {
 | 
| +            index: 2,
 | 
| +            lineNumber: 1,
 | 
| +            column: 3,
 | 
| +            message: 'Error: Line 1: Invalid left-hand side in assignment'
 | 
| +        },
 | 
| +
 | 
| +        '1 + (': {
 | 
| +            index: 5,
 | 
| +            lineNumber: 1,
 | 
| +            column: 6,
 | 
| +            message: 'Error: Line 1: Unexpected end of input'
 | 
| +        },
 | 
| +
 | 
| +        '\n\n\n{': {
 | 
| +            index: 4,
 | 
| +            lineNumber: 4,
 | 
| +            column: 2,
 | 
| +            message: 'Error: Line 4: Unexpected end of input'
 | 
| +        },
 | 
| +
 | 
| +        '\n/* Some multiline\ncomment */\n)': {
 | 
| +            index: 30,
 | 
| +            lineNumber: 4,
 | 
| +            column: 1,
 | 
| +            message: 'Error: Line 4: Unexpected token )'
 | 
| +        },
 | 
| +
 | 
| +        '{ set 1 }': {
 | 
| +            index: 6,
 | 
| +            lineNumber: 1,
 | 
| +            column: 7,
 | 
| +            message: 'Error: Line 1: Unexpected number'
 | 
| +        },
 | 
| +
 | 
| +        '{ get 2 }': {
 | 
| +            index: 6,
 | 
| +            lineNumber: 1,
 | 
| +            column: 7,
 | 
| +            message: 'Error: Line 1: Unexpected number'
 | 
| +        },
 | 
| +
 | 
| +        '({ set: s(if) { } })': {
 | 
| +            index: 10,
 | 
| +            lineNumber: 1,
 | 
| +            column: 11,
 | 
| +            message: 'Error: Line 1: Unexpected token if'
 | 
| +        },
 | 
| +
 | 
| +        '({ set s(.) { } })': {
 | 
| +            index: 9,
 | 
| +            lineNumber: 1,
 | 
| +            column: 10,
 | 
| +            message: 'Error: Line 1: Unexpected token .'
 | 
| +        },
 | 
| +
 | 
| +        '({ set s() { } })': {
 | 
| +            index: 9,
 | 
| +            lineNumber: 1,
 | 
| +            column: 10,
 | 
| +            message: 'Error: Line 1: Unexpected token )'
 | 
| +        },
 | 
| +
 | 
| +        '({ set: s() { } })': {
 | 
| +            index: 12,
 | 
| +            lineNumber: 1,
 | 
| +            column: 13,
 | 
| +            message: 'Error: Line 1: Unexpected token {'
 | 
| +        },
 | 
| +
 | 
| +        '({ set: s(a, b) { } })': {
 | 
| +            index: 16,
 | 
| +            lineNumber: 1,
 | 
| +            column: 17,
 | 
| +            message: 'Error: Line 1: Unexpected token {'
 | 
| +        },
 | 
| +
 | 
| +        '({ get: g(d) { } })': {
 | 
| +            index: 13,
 | 
| +            lineNumber: 1,
 | 
| +            column: 14,
 | 
| +            message: 'Error: Line 1: Unexpected token {'
 | 
| +        },
 | 
| +
 | 
| +        '({ get i() { }, i: 42 })': {
 | 
| +            index: 21,
 | 
| +            lineNumber: 1,
 | 
| +            column: 22,
 | 
| +            message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
 | 
| +        },
 | 
| +
 | 
| +        '({ i: 42, get i() { } })': {
 | 
| +            index: 21,
 | 
| +            lineNumber: 1,
 | 
| +            column: 22,
 | 
| +            message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
 | 
| +        },
 | 
| +
 | 
| +        '({ set i(x) { }, i: 42 })': {
 | 
| +            index: 22,
 | 
| +            lineNumber: 1,
 | 
| +            column: 23,
 | 
| +            message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
 | 
| +        },
 | 
| +
 | 
| +        '({ i: 42, set i(x) { } })': {
 | 
| +            index: 22,
 | 
| +            lineNumber: 1,
 | 
| +            column: 23,
 | 
| +            message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
 | 
| +        },
 | 
| +
 | 
| +        '({ get i() { }, get i() { } })': {
 | 
| +            index: 27,
 | 
| +            lineNumber: 1,
 | 
| +            column: 28,
 | 
| +            message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name'
 | 
| +        },
 | 
| +
 | 
| +        '({ set i(x) { }, set i(x) { } })': {
 | 
| +            index: 29,
 | 
| +            lineNumber: 1,
 | 
| +            column: 30,
 | 
| +            message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name'
 | 
| +        },
 | 
| +
 | 
| +        'function t(if) { }': {
 | 
| +            index: 11,
 | 
| +            lineNumber: 1,
 | 
| +            column: 12,
 | 
| +            message: 'Error: Line 1: Unexpected token if'
 | 
| +        },
 | 
| +
 | 
| +        'function t(true) { }': {
 | 
| +            index: 11,
 | 
| +            lineNumber: 1,
 | 
| +            column: 12,
 | 
| +            message: 'Error: Line 1: Unexpected token true'
 | 
| +        },
 | 
| +
 | 
| +        'function t(false) { }': {
 | 
| +            index: 11,
 | 
| +            lineNumber: 1,
 | 
| +            column: 12,
 | 
| +            message: 'Error: Line 1: Unexpected token false'
 | 
| +        },
 | 
| +
 | 
| +        'function t(null) { }': {
 | 
| +            index: 11,
 | 
| +            lineNumber: 1,
 | 
| +            column: 12,
 | 
| +            message: 'Error: Line 1: Unexpected token null'
 | 
| +        },
 | 
| +
 | 
| +        'function null() { }': {
 | 
| +            index: 9,
 | 
| +            lineNumber: 1,
 | 
| +            column: 10,
 | 
| +            message: 'Error: Line 1: Unexpected token null'
 | 
| +        },
 | 
| +
 | 
| +        'function true() { }': {
 | 
| +            index: 9,
 | 
| +            lineNumber: 1,
 | 
| +            column: 10,
 | 
| +            message: 'Error: Line 1: Unexpected token true'
 | 
| +        },
 | 
| +
 | 
| +        'function false() { }': {
 | 
| +            index: 9,
 | 
| +            lineNumber: 1,
 | 
| +            column: 10,
 | 
| +            message: 'Error: Line 1: Unexpected token false'
 | 
| +        },
 | 
| +
 | 
| +        'function if() { }': {
 | 
| +            index: 9,
 | 
| +            lineNumber: 1,
 | 
| +            column: 10,
 | 
| +            message: 'Error: Line 1: Unexpected token if'
 | 
| +        },
 | 
| +
 | 
| +        'a b;': {
 | 
| +            index: 2,
 | 
| +            lineNumber: 1,
 | 
| +            column: 3,
 | 
| +            message: 'Error: Line 1: Unexpected identifier'
 | 
| +        },
 | 
| +
 | 
| +        'if.a;': {
 | 
| +            index: 2,
 | 
| +            lineNumber: 1,
 | 
| +            column: 3,
 | 
| +            message: 'Error: Line 1: Unexpected token .'
 | 
| +        },
 | 
| +
 | 
| +        'a if;': {
 | 
| +            index: 2,
 | 
| +            lineNumber: 1,
 | 
| +            column: 3,
 | 
| +            message: 'Error: Line 1: Unexpected token if'
 | 
| +        },
 | 
| +
 | 
| +        'a class;': {
 | 
| +            index: 2,
 | 
| +            lineNumber: 1,
 | 
| +            column: 3,
 | 
| +            message: 'Error: Line 1: Unexpected reserved word'
 | 
| +        },
 | 
| +
 | 
| +        'break\n': {
 | 
| +            index: 5,
 | 
| +            lineNumber: 1,
 | 
| +            column: 6,
 | 
| +            message: 'Error: Line 1: Illegal break statement'
 | 
| +        },
 | 
| +
 | 
| +        'break 1;': {
 | 
| +            index: 6,
 | 
| +            lineNumber: 1,
 | 
| +            column: 7,
 | 
| +            message: 'Error: Line 1: Unexpected number'
 | 
| +        },
 | 
| +
 | 
| +        'continue\n': {
 | 
| +            index: 8,
 | 
| +            lineNumber: 1,
 | 
| +            column: 9,
 | 
| +            message: 'Error: Line 1: Illegal continue statement'
 | 
| +        },
 | 
| +
 | 
| +        'continue 2;': {
 | 
| +            index: 9,
 | 
| +            lineNumber: 1,
 | 
| +            column: 10,
 | 
| +            message: 'Error: Line 1: Unexpected number'
 | 
| +        },
 | 
| +
 | 
| +        'throw': {
 | 
| +            index: 5,
 | 
| +            lineNumber: 1,
 | 
| +            column: 6,
 | 
| +            message: 'Error: Line 1: Unexpected end of input'
 | 
| +        },
 | 
| +
 | 
| +        'throw;': {
 | 
| +            index: 5,
 | 
| +            lineNumber: 1,
 | 
| +            column: 6,
 | 
| +            message: 'Error: Line 1: Unexpected token ;'
 | 
| +        },
 | 
| +
 | 
| +        'throw\n': {
 | 
| +            index: 5,
 | 
| +            lineNumber: 1,
 | 
| +            column: 6,
 | 
| +            message: 'Error: Line 1: Illegal newline after throw'
 | 
| +        },
 | 
| +
 | 
| +        'for (var i, i2 in {});': {
 | 
| +            index: 15,
 | 
| +            lineNumber: 1,
 | 
| +            column: 16,
 | 
| +            message: 'Error: Line 1: Unexpected token in'
 | 
| +        },
 | 
| +
 | 
| +        'for ((i in {}));': {
 | 
| +            index: 14,
 | 
| +            lineNumber: 1,
 | 
| +            column: 15,
 | 
| +            message: 'Error: Line 1: Unexpected token )'
 | 
| +        },
 | 
| +
 | 
| +        'for (i + 1 in {});': {
 | 
| +            index: 10,
 | 
| +            lineNumber: 1,
 | 
| +            column: 11,
 | 
| +            message: 'Error: Line 1: Invalid left-hand side in for-in'
 | 
| +        },
 | 
| +
 | 
| +        'for (+i in {});': {
 | 
| +            index: 7,
 | 
| +            lineNumber: 1,
 | 
| +            column: 8,
 | 
| +            message: 'Error: Line 1: Invalid left-hand side in for-in'
 | 
| +        },
 | 
| +
 | 
| +        'if(false)': {
 | 
| +            index: 9,
 | 
| +            lineNumber: 1,
 | 
| +            column: 10,
 | 
| +            message: 'Error: Line 1: Unexpected end of input'
 | 
| +        },
 | 
| +
 | 
| +        'if(false) doThis(); else': {
 | 
| +            index: 24,
 | 
| +            lineNumber: 1,
 | 
| +            column: 25,
 | 
| +            message: 'Error: Line 1: Unexpected end of input'
 | 
| +        },
 | 
| +
 | 
| +        'do': {
 | 
| +            index: 2,
 | 
| +            lineNumber: 1,
 | 
| +            column: 3,
 | 
| +            message: 'Error: Line 1: Unexpected end of input'
 | 
| +        },
 | 
| +
 | 
| +        'while(false)': {
 | 
| +            index: 12,
 | 
| +            lineNumber: 1,
 | 
| +            column: 13,
 | 
| +            message: 'Error: Line 1: Unexpected end of input'
 | 
| +        },
 | 
| +
 | 
| +        'for(;;)': {
 | 
| +            index: 7,
 | 
| +            lineNumber: 1,
 | 
| +            column: 8,
 | 
| +            message: 'Error: Line 1: Unexpected end of input'
 | 
| +        },
 | 
| +
 | 
| +        'with(x)': {
 | 
| +            index: 7,
 | 
| +            lineNumber: 1,
 | 
| +            column: 8,
 | 
| +            message: 'Error: Line 1: Unexpected end of input'
 | 
| +        },
 | 
| +
 | 
| +        'try { }': {
 | 
| +            index: 7,
 | 
| +            lineNumber: 1,
 | 
| +            column: 8,
 | 
| +            message: 'Error: Line 1: Missing catch or finally after try'
 | 
| +        },
 | 
| +
 | 
| +        'try {} catch (42) {} ': {
 | 
| +            index: 14,
 | 
| +            lineNumber: 1,
 | 
| +            column: 15,
 | 
| +            message: 'Error: Line 1: Unexpected number'
 | 
| +        },
 | 
| +
 | 
| +        'try {} catch (answer()) {} ': {
 | 
| +            index: 20,
 | 
| +            lineNumber: 1,
 | 
| +            column: 21,
 | 
| +            message: 'Error: Line 1: Unexpected token ('
 | 
| +        },
 | 
| +
 | 
| +        'try {} catch (-x) {} ': {
 | 
| +            index: 14,
 | 
| +            lineNumber: 1,
 | 
| +            column: 15,
 | 
| +            message: 'Error: Line 1: Unexpected token -'
 | 
| +        },
 | 
| +
 | 
| +
 | 
| +        '\u203F = 10': {
 | 
| +            index: 0,
 | 
| +            lineNumber: 1,
 | 
| +            column: 1,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        'const x = 12, y;': {
 | 
| +            index: 15,
 | 
| +            lineNumber: 1,
 | 
| +            column: 16,
 | 
| +            message: 'Error: Line 1: Unexpected token ;'
 | 
| +        },
 | 
| +
 | 
| +        'const x, y = 12;': {
 | 
| +            index: 7,
 | 
| +            lineNumber: 1,
 | 
| +            column: 8,
 | 
| +            message: 'Error: Line 1: Unexpected token ,'
 | 
| +        },
 | 
| +
 | 
| +        'const x;': {
 | 
| +            index: 7,
 | 
| +            lineNumber: 1,
 | 
| +            column: 8,
 | 
| +            message: 'Error: Line 1: Unexpected token ;'
 | 
| +        },
 | 
| +
 | 
| +        'if(true) let a = 1;': {
 | 
| +            index: 9,
 | 
| +            lineNumber: 1,
 | 
| +            column: 10,
 | 
| +            message: 'Error: Line 1: Unexpected token let'
 | 
| +        },
 | 
| +
 | 
| +        'if(true) const a = 1;': {
 | 
| +            index: 9,
 | 
| +            lineNumber: 1,
 | 
| +            column: 10,
 | 
| +            message: 'Error: Line 1: Unexpected token const'
 | 
| +        },
 | 
| +
 | 
| +        'switch (c) { default: default: }': {
 | 
| +            index: 30,
 | 
| +            lineNumber: 1,
 | 
| +            column: 31,
 | 
| +            message: 'Error: Line 1: More than one default clause in switch statement'
 | 
| +        },
 | 
| +
 | 
| +        'new X()."s"': {
 | 
| +            index: 8,
 | 
| +            lineNumber: 1,
 | 
| +            column: 9,
 | 
| +            message: 'Error: Line 1: Unexpected string'
 | 
| +        },
 | 
| +
 | 
| +        '/*': {
 | 
| +            index: 2,
 | 
| +            lineNumber: 1,
 | 
| +            column: 3,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '/*\n\n\n': {
 | 
| +            index: 5,
 | 
| +            lineNumber: 4,
 | 
| +            column: 1,
 | 
| +            message: 'Error: Line 4: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '/**': {
 | 
| +            index: 3,
 | 
| +            lineNumber: 1,
 | 
| +            column: 4,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '/*\n\n*': {
 | 
| +            index: 5,
 | 
| +            lineNumber: 3,
 | 
| +            column: 2,
 | 
| +            message: 'Error: Line 3: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '/*hello': {
 | 
| +            index: 7,
 | 
| +            lineNumber: 1,
 | 
| +            column: 8,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '/*hello  *': {
 | 
| +            index: 10,
 | 
| +            lineNumber: 1,
 | 
| +            column: 11,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '\n]': {
 | 
| +            index: 1,
 | 
| +            lineNumber: 2,
 | 
| +            column: 1,
 | 
| +            message: 'Error: Line 2: Unexpected token ]'
 | 
| +        },
 | 
| +
 | 
| +        '\r]': {
 | 
| +            index: 1,
 | 
| +            lineNumber: 2,
 | 
| +            column: 1,
 | 
| +            message: 'Error: Line 2: Unexpected token ]'
 | 
| +        },
 | 
| +
 | 
| +        '\r\n]': {
 | 
| +            index: 2,
 | 
| +            lineNumber: 2,
 | 
| +            column: 1,
 | 
| +            message: 'Error: Line 2: Unexpected token ]'
 | 
| +        },
 | 
| +
 | 
| +        '\n\r]': {
 | 
| +            index: 2,
 | 
| +            lineNumber: 3,
 | 
| +            column: 1,
 | 
| +            message: 'Error: Line 3: Unexpected token ]'
 | 
| +        },
 | 
| +
 | 
| +        '//\r\n]': {
 | 
| +            index: 4,
 | 
| +            lineNumber: 2,
 | 
| +            column: 1,
 | 
| +            message: 'Error: Line 2: Unexpected token ]'
 | 
| +        },
 | 
| +
 | 
| +        '//\n\r]': {
 | 
| +            index: 4,
 | 
| +            lineNumber: 3,
 | 
| +            column: 1,
 | 
| +            message: 'Error: Line 3: Unexpected token ]'
 | 
| +        },
 | 
| +
 | 
| +        '/a\\\n/': {
 | 
| +            index: 4,
 | 
| +            lineNumber: 1,
 | 
| +            column: 5,
 | 
| +            message: 'Error: Line 1: Invalid regular expression: missing /'
 | 
| +        },
 | 
| +        
 | 
| +        '//\r \n]': {
 | 
| +            index: 5,
 | 
| +            lineNumber: 3,
 | 
| +            column: 1,
 | 
| +            message: 'Error: Line 3: Unexpected token ]'
 | 
| +        },
 | 
| +
 | 
| +        '/*\r\n*/]': {
 | 
| +            index: 6,
 | 
| +            lineNumber: 2,
 | 
| +            column: 3,
 | 
| +            message: 'Error: Line 2: Unexpected token ]'
 | 
| +        },
 | 
| +
 | 
| +        '/*\n\r*/]': {
 | 
| +            index: 6,
 | 
| +            lineNumber: 3,
 | 
| +            column: 3,
 | 
| +            message: 'Error: Line 3: Unexpected token ]'
 | 
| +        },
 | 
| +
 | 
| +        '/*\r \n*/]': {
 | 
| +            index: 7,
 | 
| +            lineNumber: 3,
 | 
| +            column: 3,
 | 
| +            message: 'Error: Line 3: Unexpected token ]'
 | 
| +        },
 | 
| +
 | 
| +        '\\\\': {
 | 
| +            index: 1,
 | 
| +            lineNumber: 1,
 | 
| +            column: 2,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '\\u005c': {
 | 
| +            index: 6,
 | 
| +            lineNumber: 1,
 | 
| +            column: 7,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +
 | 
| +        '\\x': {
 | 
| +            index: 1,
 | 
| +            lineNumber: 1,
 | 
| +            column: 2,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '\\u0000': {
 | 
| +            index: 6,
 | 
| +            lineNumber: 1,
 | 
| +            column: 7,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '\u200C = []': {
 | 
| +            index: 0,
 | 
| +            lineNumber: 1,
 | 
| +            column: 1,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '\u200D = []': {
 | 
| +            index: 0,
 | 
| +            lineNumber: 1,
 | 
| +            column: 1,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '"\\': {
 | 
| +            index: 3,
 | 
| +            lineNumber: 1,
 | 
| +            column: 4,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        '"\\u': {
 | 
| +            index: 3,
 | 
| +            lineNumber: 1,
 | 
| +            column: 4,
 | 
| +            message: 'Error: Line 1: Unexpected token ILLEGAL'
 | 
| +        },
 | 
| +
 | 
| +        'try { } catch() {}': {
 | 
| +            index: 14,
 | 
| +            lineNumber: 1,
 | 
| +            column: 15,
 | 
| +            message: 'Error: Line 1: Unexpected token )'
 | 
| +        },
 | 
| +
 | 
| +        'return': {
 | 
| +            index: 6,
 | 
| +            lineNumber: 1,
 | 
| +            column: 7,
 | 
| +            message: 'Error: Line 1: Illegal return statement'
 | 
| +        },
 | 
| +
 | 
| +        'break': {
 | 
| +            index: 5,
 | 
| +            lineNumber: 1,
 | 
| +            column: 6,
 | 
| +            message: 'Error: Line 1: Illegal break statement'
 | 
| +        },
 | 
| +
 | 
| +        'continue': {
 | 
| +            index: 8,
 | 
| +            lineNumber: 1,
 | 
| +            column: 9,
 | 
| +            message: 'Error: Line 1: Illegal continue statement'
 | 
| +        },
 | 
| +
 | 
| +        'switch (x) { default: continue; }': {
 | 
| +            index: 31,
 | 
| +            lineNumber: 1,
 | 
| +            column: 32,
 | 
| +            message: 'Error: Line 1: Illegal continue statement'
 | 
| +        },
 | 
| +
 | 
| +        'do { x } *': {
 | 
| +            index: 9,
 | 
| +            lineNumber: 1,
 | 
| +            column: 10,
 | 
| +            message: 'Error: Line 1: Unexpected token *'
 | 
| +        },
 | 
| +
 | 
| +        'while (true) { break x; }': {
 | 
| +            index: 22,
 | 
| +            lineNumber: 1,
 | 
| +            column: 23,
 | 
| +            message: 'Error: Line 1: Undefined label \'x\''
 | 
| +        },
 | 
| +
 | 
| +        'while (true) { continue x; }': {
 | 
| +            index: 25,
 | 
| +            lineNumber: 1,
 | 
| +            column: 26,
 | 
| +            message: 'Error: Line 1: Undefined label \'x\''
 | 
| +        },
 | 
| +
 | 
| +        'x: while (true) { (function () { break x; }); }': {
 | 
| +            index: 40,
 | 
| +            lineNumber: 1,
 | 
| +            column: 41,
 | 
| +            message: 'Error: Line 1: Undefined label \'x\''
 | 
| +        },
 | 
| +
 | 
| +        'x: while (true) { (function () { continue x; }); }': {
 | 
| +            index: 43,
 | 
| +            lineNumber: 1,
 | 
| +            column: 44,
 | 
| +            message: 'Error: Line 1: Undefined label \'x\''
 | 
| +        },
 | 
| +
 | 
| +        'x: while (true) { (function () { break; }); }': {
 | 
| +            index: 39,
 | 
| +            lineNumber: 1,
 | 
| +            column: 40,
 | 
| +            message: 'Error: Line 1: Illegal break statement'
 | 
| +        },
 | 
| +
 | 
| +        'x: while (true) { (function () { continue; }); }': {
 | 
| +            index: 42,
 | 
| +            lineNumber: 1,
 | 
| +            column: 43,
 | 
| +            message: 'Error: Line 1: Illegal continue statement'
 | 
| +        },
 | 
| +
 | 
| +        'x: while (true) { x: while (true) { } }': {
 | 
| +            index: 20,
 | 
| +            lineNumber: 1,
 | 
| +            column: 21,
 | 
| +            message: 'Error: Line 1: Label \'x\' has already been declared'
 | 
| +        },
 | 
| +
 | 
| +        '(function () { \'use strict\'; delete i; }())': {
 | 
| +            index: 37,
 | 
| +            lineNumber: 1,
 | 
| +            column: 38,
 | 
| +            message: 'Error: Line 1: Delete of an unqualified identifier in strict mode.'
 | 
| +        },
 | 
| +
 | 
| +        '(function () { \'use strict\'; with (i); }())': {
 | 
| +            index: 28,
 | 
| +            lineNumber: 1,
 | 
| +            column: 29,
 | 
| +            message: 'Error: Line 1: Strict mode code may not include a with statement'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; ({ i: 42, i: 42 }) }': {
 | 
| +            index: 47,
 | 
| +            lineNumber: 1,
 | 
| +            column: 48,
 | 
| +            message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; ({ hasOwnProperty: 42, hasOwnProperty: 42 }) }': {
 | 
| +            index: 73,
 | 
| +            lineNumber: 1,
 | 
| +            column: 74,
 | 
| +            message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; var eval = 10; }': {
 | 
| +            index: 40,
 | 
| +            lineNumber: 1,
 | 
| +            column: 41,
 | 
| +            message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; var arguments = 10; }': {
 | 
| +            index: 45,
 | 
| +            lineNumber: 1,
 | 
| +            column: 46,
 | 
| +            message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; try { } catch (eval) { } }': {
 | 
| +            index: 51,
 | 
| +            lineNumber: 1,
 | 
| +            column: 52,
 | 
| +            message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; try { } catch (arguments) { } }': {
 | 
| +            index: 56,
 | 
| +            lineNumber: 1,
 | 
| +            column: 57,
 | 
| +            message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; eval = 10; }': {
 | 
| +            index: 32,
 | 
| +            lineNumber: 1,
 | 
| +            column: 33,
 | 
| +            message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; arguments = 10; }': {
 | 
| +            index: 32,
 | 
| +            lineNumber: 1,
 | 
| +            column: 33,
 | 
| +            message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; ++eval; }': {
 | 
| +            index: 38,
 | 
| +            lineNumber: 1,
 | 
| +            column: 39,
 | 
| +            message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; --eval; }': {
 | 
| +            index: 38,
 | 
| +            lineNumber: 1,
 | 
| +            column: 39,
 | 
| +            message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; ++arguments; }': {
 | 
| +            index: 43,
 | 
| +            lineNumber: 1,
 | 
| +            column: 44,
 | 
| +            message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; --arguments; }': {
 | 
| +            index: 43,
 | 
| +            lineNumber: 1,
 | 
| +            column: 44,
 | 
| +            message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; eval++; }': {
 | 
| +            index: 36,
 | 
| +            lineNumber: 1,
 | 
| +            column: 37,
 | 
| +            message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; eval--; }': {
 | 
| +            index: 36,
 | 
| +            lineNumber: 1,
 | 
| +            column: 37,
 | 
| +            message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; arguments++; }': {
 | 
| +            index: 41,
 | 
| +            lineNumber: 1,
 | 
| +            column: 42,
 | 
| +            message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; arguments--; }': {
 | 
| +            index: 41,
 | 
| +            lineNumber: 1,
 | 
| +            column: 42,
 | 
| +            message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; function eval() { } }': {
 | 
| +            index: 41,
 | 
| +            lineNumber: 1,
 | 
| +            column: 42,
 | 
| +            message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; function arguments() { } }': {
 | 
| +            index: 41,
 | 
| +            lineNumber: 1,
 | 
| +            column: 42,
 | 
| +            message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function eval() {\'use strict\'; }': {
 | 
| +            index: 9,
 | 
| +            lineNumber: 1,
 | 
| +            column: 10,
 | 
| +            message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function arguments() {\'use strict\'; }': {
 | 
| +            index: 9,
 | 
| +            lineNumber: 1,
 | 
| +            column: 10,
 | 
| +            message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; (function eval() { }()) }': {
 | 
| +            index: 42,
 | 
| +            lineNumber: 1,
 | 
| +            column: 43,
 | 
| +            message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; (function arguments() { }()) }': {
 | 
| +            index: 42,
 | 
| +            lineNumber: 1,
 | 
| +            column: 43,
 | 
| +            message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        '(function eval() {\'use strict\'; })()': {
 | 
| +            index: 10,
 | 
| +            lineNumber: 1,
 | 
| +            column: 11,
 | 
| +            message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        '(function arguments() {\'use strict\'; })()': {
 | 
| +            index: 10,
 | 
| +            lineNumber: 1,
 | 
| +            column: 11,
 | 
| +            message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; ({ s: function eval() { } }); }': {
 | 
| +            index: 47,
 | 
| +            lineNumber: 1,
 | 
| +            column: 48,
 | 
| +            message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        '(function package() {\'use strict\'; })()': {
 | 
| +            index: 10,
 | 
| +            lineNumber: 1,
 | 
| +            column: 11,
 | 
| +            message: 'Error: Line 1: Use of future reserved word in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; ({ i: 10, set s(eval) { } }); }': {
 | 
| +            index: 48,
 | 
| +            lineNumber: 1,
 | 
| +            column: 49,
 | 
| +            message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; ({ set s(eval) { } }); }': {
 | 
| +            index: 41,
 | 
| +            lineNumber: 1,
 | 
| +            column: 42,
 | 
| +            message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() {\'use strict\'; ({ s: function s(eval) { } }); }': {
 | 
| +            index: 49,
 | 
| +            lineNumber: 1,
 | 
| +            column: 50,
 | 
| +            message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello(eval) {\'use strict\';}': {
 | 
| +            index: 15,
 | 
| +            lineNumber: 1,
 | 
| +            column: 16,
 | 
| +            message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello(arguments) {\'use strict\';}': {
 | 
| +            index: 15,
 | 
| +            lineNumber: 1,
 | 
| +            column: 16,
 | 
| +            message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() { \'use strict\'; function inner(eval) {} }': {
 | 
| +            index: 48,
 | 
| +            lineNumber: 1,
 | 
| +            column: 49,
 | 
| +            message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() { \'use strict\'; function inner(arguments) {} }': {
 | 
| +            index: 48,
 | 
| +            lineNumber: 1,
 | 
| +            column: 49,
 | 
| +            message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        ' "\\1"; \'use strict\';': {
 | 
| +            index: 1,
 | 
| +            lineNumber: 1,
 | 
| +            column: 2,
 | 
| +            message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() { \'use strict\'; "\\1"; }': {
 | 
| +            index: 33,
 | 
| +            lineNumber: 1,
 | 
| +            column: 34,
 | 
| +            message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() { \'use strict\'; 021; }': {
 | 
| +            index: 33,
 | 
| +            lineNumber: 1,
 | 
| +            column: 34,
 | 
| +            message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() { \'use strict\'; ({ "\\1": 42 }); }': {
 | 
| +            index: 36,
 | 
| +            lineNumber: 1,
 | 
| +            column: 37,
 | 
| +            message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() { \'use strict\'; ({ 021: 42 }); }': {
 | 
| +            index: 36,
 | 
| +            lineNumber: 1,
 | 
| +            column: 37,
 | 
| +            message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() { "octal directive\\1"; "use strict"; }': {
 | 
| +            index: 19,
 | 
| +            lineNumber: 1,
 | 
| +            column: 20,
 | 
| +            message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() { "octal directive\\1"; "octal directive\\2"; "use strict"; }': {
 | 
| +            index: 19,
 | 
| +            lineNumber: 1,
 | 
| +            column: 20,
 | 
| +            message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() { "use strict"; function inner() { "octal directive\\1"; } }': {
 | 
| +            index: 52,
 | 
| +            lineNumber: 1,
 | 
| +            column: 53,
 | 
| +            message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() { "use strict"; var implements; }': {
 | 
| +            index: 37,
 | 
| +            lineNumber: 1,
 | 
| +            column: 38,
 | 
| +            message: 'Error: Line 1: Use of future reserved word in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() { "use strict"; var interface; }': {
 | 
| +            index: 37,
 | 
| +            lineNumber: 1,
 | 
| +            column: 38,
 | 
| +            message: 'Error: Line 1: Use of future reserved word in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() { "use strict"; var package; }': {
 | 
| +            index: 37,
 | 
| +            lineNumber: 1,
 | 
| +            column: 38,
 | 
| +            message: 'Error: Line 1: Use of future reserved word in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() { "use strict"; var private; }': {
 | 
| +            index: 37,
 | 
| +            lineNumber: 1,
 | 
| +            column: 38,
 | 
| +            message: 'Error: Line 1: Use of future reserved word in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() { "use strict"; var protected; }': {
 | 
| +            index: 37,
 | 
| +            lineNumber: 1,
 | 
| +            column: 38,
 | 
| +            message: 'Error: Line 1: Use of future reserved word in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() { "use strict"; var public; }': {
 | 
| +            index: 37,
 | 
| +            lineNumber: 1,
 | 
| +            column: 38,
 | 
| +            message: 'Error: Line 1: Use of future reserved word in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() { "use strict"; var static; }': {
 | 
| +            index: 37,
 | 
| +            lineNumber: 1,
 | 
| +            column: 38,
 | 
| +            message: 'Error: Line 1: Use of future reserved word in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() { "use strict"; var yield; }': {
 | 
| +            index: 37,
 | 
| +            lineNumber: 1,
 | 
| +            column: 38,
 | 
| +            message: 'Error: Line 1: Use of future reserved word in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello() { "use strict"; var let; }': {
 | 
| +            index: 37,
 | 
| +            lineNumber: 1,
 | 
| +            column: 38,
 | 
| +            message: 'Error: Line 1: Use of future reserved word in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function hello(static) { "use strict"; }': {
 | 
| +            index: 15,
 | 
| +            lineNumber: 1,
 | 
| +            column: 16,
 | 
| +            message: 'Error: Line 1: Use of future reserved word in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function static() { "use strict"; }': {
 | 
| +            index: 9,
 | 
| +            lineNumber: 1,
 | 
| +            column: 10,
 | 
| +            message: 'Error: Line 1: Use of future reserved word in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'var yield': {
 | 
| +            index: 4,
 | 
| +            lineNumber: 1,
 | 
| +            column: 5,
 | 
| +            message: 'Error: Line 1: Unexpected token yield'
 | 
| +        },
 | 
| +
 | 
| +        'var let': {
 | 
| +            index: 4,
 | 
| +            lineNumber: 1,
 | 
| +            column: 5,
 | 
| +            message: 'Error: Line 1: Unexpected token let'
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; function static() { }': {
 | 
| +            index: 23,
 | 
| +            lineNumber: 1,
 | 
| +            column: 24,
 | 
| +            message: 'Error: Line 1: Use of future reserved word in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function a(t, t) { "use strict"; }': {
 | 
| +            index: 14,
 | 
| +            lineNumber: 1,
 | 
| +            column: 15,
 | 
| +            message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
 | 
| +        },
 | 
| +
 | 
| +        'function a(eval) { "use strict"; }': {
 | 
| +            index: 11,
 | 
| +            lineNumber: 1,
 | 
| +            column: 12,
 | 
| +            message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function a(package) { "use strict"; }': {
 | 
| +            index: 11,
 | 
| +            lineNumber: 1,
 | 
| +            column: 12,
 | 
| +            message: 'Error: Line 1: Use of future reserved word in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'function a() { "use strict"; function b(t, t) { }; }': {
 | 
| +            index: 43,
 | 
| +            lineNumber: 1,
 | 
| +            column: 44,
 | 
| +            message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
 | 
| +        },
 | 
| +
 | 
| +        '(function a(t, t) { "use strict"; })': {
 | 
| +            index: 15,
 | 
| +            lineNumber: 1,
 | 
| +            column: 16,
 | 
| +            message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
 | 
| +        },
 | 
| +
 | 
| +        'function a() { "use strict"; (function b(t, t) { }); }': {
 | 
| +            index: 44,
 | 
| +            lineNumber: 1,
 | 
| +            column: 45,
 | 
| +            message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
 | 
| +        },
 | 
| +
 | 
| +        '(function a(eval) { "use strict"; })': {
 | 
| +            index: 12,
 | 
| +            lineNumber: 1,
 | 
| +            column: 13,
 | 
| +            message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        '(function a(package) { "use strict"; })': {
 | 
| +            index: 12,
 | 
| +            lineNumber: 1,
 | 
| +            column: 13,
 | 
| +            message: 'Error: Line 1: Use of future reserved word in strict mode'
 | 
| +        },
 | 
| +
 | 
| +        'var': {
 | 
| +            index: 3,
 | 
| +            lineNumber: 1,
 | 
| +            column: 4,
 | 
| +            message: 'Error: Line 1: Unexpected end of input'
 | 
| +        },
 | 
| +
 | 
| +        'let': {
 | 
| +            index: 3,
 | 
| +            lineNumber: 1,
 | 
| +            column: 4,
 | 
| +            message: 'Error: Line 1: Unexpected end of input'
 | 
| +        },
 | 
| +
 | 
| +        'const': {
 | 
| +            index: 5,
 | 
| +            lineNumber: 1,
 | 
| +            column: 6,
 | 
| +            message: 'Error: Line 1: Unexpected end of input'
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'API': {
 | 
| +        'parse()': {
 | 
| +            call: 'parse',
 | 
| +            args: [],
 | 
| +            result: {
 | 
| +                type: 'Program',
 | 
| +                body: [{
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'undefined'
 | 
| +                    }
 | 
| +                }]
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'parse(null)': {
 | 
| +            call: 'parse',
 | 
| +            args: [null],
 | 
| +            result: {
 | 
| +                type: 'Program',
 | 
| +                body: [{
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: null
 | 
| +                    }
 | 
| +                }]
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'parse(42)': {
 | 
| +            call: 'parse',
 | 
| +            args: [42],
 | 
| +            result: {
 | 
| +                type: 'Program',
 | 
| +                body: [{
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 42
 | 
| +                    }
 | 
| +                }]
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'parse(true)': {
 | 
| +            call: 'parse',
 | 
| +            args: [true],
 | 
| +            result: {
 | 
| +                type: 'Program',
 | 
| +                body: [{
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: true
 | 
| +                    }
 | 
| +                }]
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'parse(undefined)': {
 | 
| +            call: 'parse',
 | 
| +            args: [void 0],
 | 
| +            result: {
 | 
| +                type: 'Program',
 | 
| +                body: [{
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'undefined'
 | 
| +                    }
 | 
| +                }]
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'parse(new String("test"))': {
 | 
| +            call: 'parse',
 | 
| +            args: [new String('test')],
 | 
| +            result: {
 | 
| +                type: 'Program',
 | 
| +                body: [{
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'test'
 | 
| +                    }
 | 
| +                }]
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'parse(new Number(42))': {
 | 
| +            call: 'parse',
 | 
| +            args: [new Number(42)],
 | 
| +            result: {
 | 
| +                type: 'Program',
 | 
| +                body: [{
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 42
 | 
| +                    }
 | 
| +                }]
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'parse(new Boolean(true))': {
 | 
| +            call: 'parse',
 | 
| +            args: [new Boolean(true)],
 | 
| +            result: {
 | 
| +                type: 'Program',
 | 
| +                body: [{
 | 
| +                    type: 'ExpressionStatement',
 | 
| +                    expression: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: true
 | 
| +                    }
 | 
| +                }]
 | 
| +            }
 | 
| +        },
 | 
| +
 | 
| +        'Syntax': {
 | 
| +            property: 'Syntax',
 | 
| +            result: {
 | 
| +                AssignmentExpression: 'AssignmentExpression',
 | 
| +                ArrayExpression: 'ArrayExpression',
 | 
| +                BlockStatement: 'BlockStatement',
 | 
| +                BinaryExpression: 'BinaryExpression',
 | 
| +                BreakStatement: 'BreakStatement',
 | 
| +                CallExpression: 'CallExpression',
 | 
| +                CatchClause: 'CatchClause',
 | 
| +                ConditionalExpression: 'ConditionalExpression',
 | 
| +                ContinueStatement: 'ContinueStatement',
 | 
| +                DoWhileStatement: 'DoWhileStatement',
 | 
| +                DebuggerStatement: 'DebuggerStatement',
 | 
| +                EmptyStatement: 'EmptyStatement',
 | 
| +                ExpressionStatement: 'ExpressionStatement',
 | 
| +                ForStatement: 'ForStatement',
 | 
| +                ForInStatement: 'ForInStatement',
 | 
| +                FunctionDeclaration: 'FunctionDeclaration',
 | 
| +                FunctionExpression: 'FunctionExpression',
 | 
| +                Identifier: 'Identifier',
 | 
| +                IfStatement: 'IfStatement',
 | 
| +                Literal: 'Literal',
 | 
| +                LabeledStatement: 'LabeledStatement',
 | 
| +                LogicalExpression: 'LogicalExpression',
 | 
| +                MemberExpression: 'MemberExpression',
 | 
| +                NewExpression: 'NewExpression',
 | 
| +                ObjectExpression: 'ObjectExpression',
 | 
| +                Program: 'Program',
 | 
| +                Property: 'Property',
 | 
| +                ReturnStatement: 'ReturnStatement',
 | 
| +                SequenceExpression: 'SequenceExpression',
 | 
| +                SwitchStatement: 'SwitchStatement',
 | 
| +                SwitchCase: 'SwitchCase',
 | 
| +                ThisExpression: 'ThisExpression',
 | 
| +                ThrowStatement: 'ThrowStatement',
 | 
| +                TryStatement: 'TryStatement',
 | 
| +                UnaryExpression: 'UnaryExpression',
 | 
| +                UpdateExpression: 'UpdateExpression',
 | 
| +                VariableDeclaration: 'VariableDeclaration',
 | 
| +                VariableDeclarator: 'VariableDeclarator',
 | 
| +                WhileStatement: 'WhileStatement',
 | 
| +                WithStatement: 'WithStatement'
 | 
| +            }
 | 
| +        }
 | 
| +
 | 
| +    },
 | 
| +
 | 
| +    'Tolerant parse': {
 | 
| +        'return': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ReturnStatement',
 | 
| +                'argument': null,
 | 
| +                range: [0, 6],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 6 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 6],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 6 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 6,
 | 
| +                lineNumber: 1,
 | 
| +                column: 7,
 | 
| +                message: 'Error: Line 1: Illegal return statement'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '(function () { \'use strict\'; with (i); }())': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'CallExpression',
 | 
| +                    callee: {
 | 
| +                        type: 'FunctionExpression',
 | 
| +                        id: null,
 | 
| +                        params: [],
 | 
| +                        defaults: [],
 | 
| +                        body: {
 | 
| +                            type: 'BlockStatement',
 | 
| +                            body: [{
 | 
| +                                type: 'ExpressionStatement',
 | 
| +                                expression: {
 | 
| +                                    type: 'Literal',
 | 
| +                                    value: 'use strict',
 | 
| +                                    raw: '\'use strict\'',
 | 
| +                                    range: [15, 27],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 15 },
 | 
| +                                        end: { line: 1, column: 27 }
 | 
| +                                    }
 | 
| +                                },
 | 
| +                                range: [15, 28],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 15 },
 | 
| +                                    end: { line: 1, column: 28 }
 | 
| +                                }
 | 
| +                            }, {
 | 
| +                                type: 'WithStatement',
 | 
| +                                object: {
 | 
| +                                    type: 'Identifier',
 | 
| +                                    name: 'i',
 | 
| +                                    range: [35, 36],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 35 },
 | 
| +                                        end: { line: 1, column: 36 }
 | 
| +                                    }
 | 
| +                                },
 | 
| +                                body: {
 | 
| +                                    type: 'EmptyStatement',
 | 
| +                                    range: [37, 38],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 37 },
 | 
| +                                        end: { line: 1, column: 38 }
 | 
| +                                    }
 | 
| +                                },
 | 
| +                                range: [29, 38],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 29 },
 | 
| +                                    end: { line: 1, column: 38 }
 | 
| +                                }
 | 
| +                            }],
 | 
| +                            range: [13, 40],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 13 },
 | 
| +                                end: { line: 1, column: 40 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        rest: null,
 | 
| +                        generator: false,
 | 
| +                        expression: false,
 | 
| +                        range: [1, 40],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 1 },
 | 
| +                            end: { line: 1, column: 40 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    'arguments': [],
 | 
| +                    range: [1, 42],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 1 },
 | 
| +                        end: { line: 1, column: 42 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 43],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 43 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 43],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 43 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 29,
 | 
| +                lineNumber: 1,
 | 
| +                column: 30,
 | 
| +                message: 'Error: Line 1: Strict mode code may not include a with statement'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '(function () { \'use strict\'; 021 }())': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'CallExpression',
 | 
| +                    callee: {
 | 
| +                        type: 'FunctionExpression',
 | 
| +                        id: null,
 | 
| +                        params: [],
 | 
| +                        defaults: [],
 | 
| +                        body: {
 | 
| +                            type: 'BlockStatement',
 | 
| +                            body: [{
 | 
| +                                type: 'ExpressionStatement',
 | 
| +                                expression: {
 | 
| +                                    type: 'Literal',
 | 
| +                                    value: 'use strict',
 | 
| +                                    raw: '\'use strict\'',
 | 
| +                                    range: [15, 27],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 15 },
 | 
| +                                        end: { line: 1, column: 27 }
 | 
| +                                    }
 | 
| +                                },
 | 
| +                                range: [15, 28],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 15 },
 | 
| +                                    end: { line: 1, column: 28 }
 | 
| +                                }
 | 
| +                            }, {
 | 
| +                                type: 'ExpressionStatement',
 | 
| +                                expression: {
 | 
| +                                    type: 'Literal',
 | 
| +                                    value: 17,
 | 
| +                                    raw: "021",
 | 
| +                                    range: [29, 32],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 29 },
 | 
| +                                        end: { line: 1, column: 32 }
 | 
| +                                    }
 | 
| +                                },
 | 
| +                                range: [29, 33],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 29 },
 | 
| +                                    end: { line: 1, column: 33 }
 | 
| +                                }
 | 
| +                            }],
 | 
| +                            range: [13, 34],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 13 },
 | 
| +                                end: { line: 1, column: 34 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        rest: null,
 | 
| +                        generator: false,
 | 
| +                        expression: false,
 | 
| +                        range: [1, 34],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 1 },
 | 
| +                            end: { line: 1, column: 34 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    'arguments': [],
 | 
| +                    range: [1, 36],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 1 },
 | 
| +                        end: { line: 1, column: 36 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 37],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 37 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 37],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 37 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 29,
 | 
| +                lineNumber: 1,
 | 
| +                column: 30,
 | 
| +                message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; delete x': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'UnaryExpression',
 | 
| +                    operator: 'delete',
 | 
| +                    argument: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [21, 22],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 21 },
 | 
| +                            end: { line: 1, column: 22 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    prefix: true,
 | 
| +                    range: [14, 22],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 14 },
 | 
| +                        end: { line: 1, column: 22 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [14, 22],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 22 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 22],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 22 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 22,
 | 
| +                lineNumber: 1,
 | 
| +                column: 23,
 | 
| +                message: 'Error: Line 1: Delete of an unqualified identifier in strict mode.'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; try {} catch (eval) {}': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'TryStatement',
 | 
| +                block: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [],
 | 
| +                    range: [18, 20],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 18 },
 | 
| +                        end: { line: 1, column: 20 }
 | 
| +                    }
 | 
| +                },
 | 
| +                guardedHandlers: [],
 | 
| +                handlers: [{
 | 
| +                    type: 'CatchClause',
 | 
| +                    param: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'eval',
 | 
| +                        range: [28, 32],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 28 },
 | 
| +                            end: { line: 1, column: 32 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    body: {
 | 
| +                        type: 'BlockStatement',
 | 
| +                        body: [],
 | 
| +                        range: [34, 36],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 34 },
 | 
| +                            end: { line: 1, column: 36 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [21, 36],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 21 },
 | 
| +                        end: { line: 1, column: 36 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                finalizer: null,
 | 
| +                range: [14, 36],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 36 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 36],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 36 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 32,
 | 
| +                lineNumber: 1,
 | 
| +                column: 33,
 | 
| +                message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; try {} catch (arguments) {}': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'TryStatement',
 | 
| +                block: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [],
 | 
| +                    range: [18, 20],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 18 },
 | 
| +                        end: { line: 1, column: 20 }
 | 
| +                    }
 | 
| +                },
 | 
| +                guardedHandlers: [],
 | 
| +                handlers: [{
 | 
| +                    type: 'CatchClause',
 | 
| +                    param: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'arguments',
 | 
| +                        range: [28, 37],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 28 },
 | 
| +                            end: { line: 1, column: 37 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    body: {
 | 
| +                        type: 'BlockStatement',
 | 
| +                        body: [],
 | 
| +                        range: [39, 41],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 39 },
 | 
| +                            end: { line: 1, column: 41 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [21, 41],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 21 },
 | 
| +                        end: { line: 1, column: 41 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                finalizer: null,
 | 
| +                range: [14, 41],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 41 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 41],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 41 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 37,
 | 
| +                lineNumber: 1,
 | 
| +                column: 38,
 | 
| +                message: 'Error: Line 1: Catch variable may not be eval or arguments in strict mode'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; var eval;': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'eval',
 | 
| +                        range: [18, 22],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 18 },
 | 
| +                            end: { line: 1, column: 22 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: null,
 | 
| +                    range: [18, 22],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 18 },
 | 
| +                        end: { line: 1, column: 22 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'var',
 | 
| +                range: [14, 23],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 23 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 23],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 23 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 22,
 | 
| +                lineNumber: 1,
 | 
| +                column: 23,
 | 
| +                message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; var arguments;': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'arguments',
 | 
| +                        range: [18, 27],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 18 },
 | 
| +                            end: { line: 1, column: 27 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: null,
 | 
| +                    range: [18, 27],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 18 },
 | 
| +                        end: { line: 1, column: 27 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'var',
 | 
| +                range: [14, 28],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 28 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 28],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 28 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 27,
 | 
| +                lineNumber: 1,
 | 
| +                column: 28,
 | 
| +                message: 'Error: Line 1: Variable name may not be eval or arguments in strict mode'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; eval = 0;': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'AssignmentExpression',
 | 
| +                    operator: '=',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'eval',
 | 
| +                        range: [14, 18],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 14 },
 | 
| +                            end: { line: 1, column: 18 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 0,
 | 
| +                        raw: '0',
 | 
| +                        range: [21, 22],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 21 },
 | 
| +                            end: { line: 1, column: 22 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [14, 22],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 14 },
 | 
| +                        end: { line: 1, column: 22 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [14, 23],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 23 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 23],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 23 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 14,
 | 
| +                lineNumber: 1,
 | 
| +                column: 15,
 | 
| +                message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; eval++;': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'UpdateExpression',
 | 
| +                    operator: '++',
 | 
| +                    argument: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'eval',
 | 
| +                        range: [14, 18],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 14 },
 | 
| +                            end: { line: 1, column: 18 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    prefix: false,
 | 
| +                    range: [14, 20],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 14 },
 | 
| +                        end: { line: 1, column: 20 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [14, 21],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 21 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 21],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 21 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 18,
 | 
| +                lineNumber: 1,
 | 
| +                column: 19,
 | 
| +                message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; --eval;': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'UpdateExpression',
 | 
| +                    operator: '--',
 | 
| +                    argument: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'eval',
 | 
| +                        range: [16, 20],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 16 },
 | 
| +                            end: { line: 1, column: 20 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    prefix: true,
 | 
| +                    range: [14, 20],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 14 },
 | 
| +                        end: { line: 1, column: 20 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [14, 21],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 21 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 21],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 21 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 20,
 | 
| +                lineNumber: 1,
 | 
| +                column: 21,
 | 
| +                message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; arguments = 0;': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'AssignmentExpression',
 | 
| +                    operator: '=',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'arguments',
 | 
| +                        range: [14, 23],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 14 },
 | 
| +                            end: { line: 1, column: 23 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 0,
 | 
| +                        raw: '0',
 | 
| +                        range: [26, 27],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 26 },
 | 
| +                            end: { line: 1, column: 27 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [14, 27],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 14 },
 | 
| +                        end: { line: 1, column: 27 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [14, 28],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 28 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 28],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 28 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 14,
 | 
| +                lineNumber: 1,
 | 
| +                column: 15,
 | 
| +                message: 'Error: Line 1: Assignment to eval or arguments is not allowed in strict mode'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; arguments--;': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'UpdateExpression',
 | 
| +                    operator: '--',
 | 
| +                    argument: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'arguments',
 | 
| +                        range: [14, 23],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 14 },
 | 
| +                            end: { line: 1, column: 23 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    prefix: false,
 | 
| +                    range: [14, 25],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 14 },
 | 
| +                        end: { line: 1, column: 25 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [14, 26],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 26 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 26],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 26 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 23,
 | 
| +                lineNumber: 1,
 | 
| +                column: 24,
 | 
| +                message: 'Error: Line 1: Postfix increment/decrement may not have eval or arguments operand in strict mode'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; ++arguments;': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'UpdateExpression',
 | 
| +                    operator: '++',
 | 
| +                    argument: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'arguments',
 | 
| +                        range: [16, 25],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 16 },
 | 
| +                            end: { line: 1, column: 25 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    prefix: true,
 | 
| +                    range: [14, 25],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 14 },
 | 
| +                        end: { line: 1, column: 25 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [14, 26],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 26 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 26],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 26 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 25,
 | 
| +                lineNumber: 1,
 | 
| +                column: 26,
 | 
| +                message: 'Error: Line 1: Prefix increment/decrement may not have eval or arguments operand in strict mode'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +
 | 
| +        '"use strict";x={y:1,y:1}': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'AssignmentExpression',
 | 
| +                    operator: '=',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [13, 14],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 13 },
 | 
| +                            end: { line: 1, column: 14 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'ObjectExpression',
 | 
| +                        properties: [{
 | 
| +                            type: 'Property',
 | 
| +                            key: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'y',
 | 
| +                                range: [16, 17],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 16 },
 | 
| +                                    end: { line: 1, column: 17 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            value: {
 | 
| +                                type: 'Literal',
 | 
| +                                value: 1,
 | 
| +                                raw: '1',
 | 
| +                                range: [18, 19],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 18 },
 | 
| +                                    end: { line: 1, column: 19 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            kind: 'init',
 | 
| +                            range: [16, 19],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 16 },
 | 
| +                                end: { line: 1, column: 19 }
 | 
| +                            }
 | 
| +                        }, {
 | 
| +                            type: 'Property',
 | 
| +                            key: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'y',
 | 
| +                                range: [20, 21],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 20 },
 | 
| +                                    end: { line: 1, column: 21 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            value: {
 | 
| +                                type: 'Literal',
 | 
| +                                value: 1,
 | 
| +                                raw: '1',
 | 
| +                                range: [22, 23],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 22 },
 | 
| +                                    end: { line: 1, column: 23 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            kind: 'init',
 | 
| +                            range: [20, 23],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 20 },
 | 
| +                                end: { line: 1, column: 23 }
 | 
| +                            }
 | 
| +                        }],
 | 
| +                        range: [15, 24],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 15 },
 | 
| +                            end: { line: 1, column: 24 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [13, 24],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 13 },
 | 
| +                        end: { line: 1, column: 24 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [13, 24],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 13 },
 | 
| +                    end: { line: 1, column: 24 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 24],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 24 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 23,
 | 
| +                lineNumber: 1,
 | 
| +                column: 24,
 | 
| +                message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; function eval() {};': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'FunctionDeclaration',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'eval',
 | 
| +                    range: [23, 27],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 23 },
 | 
| +                        end: { line: 1, column: 27 }
 | 
| +                    }
 | 
| +                },
 | 
| +                params: [],
 | 
| +                defaults: [],
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [],
 | 
| +                    range: [30, 32],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 30 },
 | 
| +                        end: { line: 1, column: 32 }
 | 
| +                    }
 | 
| +                },
 | 
| +                rest: null,
 | 
| +                generator: false,
 | 
| +                expression: false,
 | 
| +                range: [14, 32],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 32 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'EmptyStatement',
 | 
| +                range: [32, 33],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 32 },
 | 
| +                    end: { line: 1, column: 33 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 33],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 33 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 23,
 | 
| +                lineNumber: 1,
 | 
| +                column: 24,
 | 
| +                message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; function arguments() {};': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'FunctionDeclaration',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'arguments',
 | 
| +                    range: [23, 32],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 23 },
 | 
| +                        end: { line: 1, column: 32 }
 | 
| +                    }
 | 
| +                },
 | 
| +                params: [],
 | 
| +                defaults: [],
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [],
 | 
| +                    range: [35, 37],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 35 },
 | 
| +                        end: { line: 1, column: 37 }
 | 
| +                    }
 | 
| +                },
 | 
| +                rest: null,
 | 
| +                generator: false,
 | 
| +                expression: false,
 | 
| +                range: [14, 37],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 37 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'EmptyStatement',
 | 
| +                range: [37, 38],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 37 },
 | 
| +                    end: { line: 1, column: 38 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 38],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 38 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 23,
 | 
| +                lineNumber: 1,
 | 
| +                column: 24,
 | 
| +                message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; function interface() {};': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'FunctionDeclaration',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'interface',
 | 
| +                    range: [23, 32],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 23 },
 | 
| +                        end: { line: 1, column: 32 }
 | 
| +                    }
 | 
| +                },
 | 
| +                params: [],
 | 
| +                defaults: [],
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [],
 | 
| +                    range: [35, 37],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 35 },
 | 
| +                        end: { line: 1, column: 37 }
 | 
| +                    }
 | 
| +                },
 | 
| +                rest: null,
 | 
| +                generator: false,
 | 
| +                expression: false,
 | 
| +                range: [14, 37],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 37 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'EmptyStatement',
 | 
| +                range: [37, 38],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 37 },
 | 
| +                    end: { line: 1, column: 38 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 38],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 38 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 23,
 | 
| +                lineNumber: 1,
 | 
| +                column: 24,
 | 
| +                message: 'Error: Line 1: Use of future reserved word in strict mode'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; (function eval() {});': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'FunctionExpression',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'eval',
 | 
| +                        range: [24, 28],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 24 },
 | 
| +                            end: { line: 1, column: 28 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    params: [],
 | 
| +                    defaults: [],
 | 
| +                    body: {
 | 
| +                        type: 'BlockStatement',
 | 
| +                        body: [],
 | 
| +                        range: [31, 33],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 31 },
 | 
| +                            end: { line: 1, column: 33 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    rest: null,
 | 
| +                    generator: false,
 | 
| +                    expression: false,
 | 
| +                    range: [15, 33],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 33 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [14, 35],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 35 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 35],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 35 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 24,
 | 
| +                lineNumber: 1,
 | 
| +                column: 25,
 | 
| +                message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; (function arguments() {});': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'FunctionExpression',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'arguments',
 | 
| +                        range: [24, 33],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 24 },
 | 
| +                            end: { line: 1, column: 33 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    params: [],
 | 
| +                    defaults: [],
 | 
| +                    body: {
 | 
| +                        type: 'BlockStatement',
 | 
| +                        body: [],
 | 
| +                        range: [36, 38],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 36 },
 | 
| +                            end: { line: 1, column: 38 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    rest: null,
 | 
| +                    generator: false,
 | 
| +                    expression: false,
 | 
| +                    range: [15, 38],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 38 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [14, 40],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 40 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 40],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 40 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 24,
 | 
| +                lineNumber: 1,
 | 
| +                column: 25,
 | 
| +                message: 'Error: Line 1: Function name may not be eval or arguments in strict mode'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; (function interface() {});': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'FunctionExpression',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'interface',
 | 
| +                        range: [24, 33],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 24 },
 | 
| +                            end: { line: 1, column: 33 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    params: [],
 | 
| +                    defaults: [],
 | 
| +                    body: {
 | 
| +                        type: 'BlockStatement',
 | 
| +                        body: [],
 | 
| +                        range: [36, 38],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 36 },
 | 
| +                            end: { line: 1, column: 38 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    rest: null,
 | 
| +                    generator: false,
 | 
| +                    expression: false,
 | 
| +                    range: [15, 38],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 38 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [14, 40],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 40 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 40],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 40 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 24,
 | 
| +                lineNumber: 1,
 | 
| +                column: 25,
 | 
| +                message: 'Error: Line 1: Use of future reserved word in strict mode'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; function f(eval) {};': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'FunctionDeclaration',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'f',
 | 
| +                    range: [23, 24],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 23 },
 | 
| +                        end: { line: 1, column: 24 }
 | 
| +                    }
 | 
| +                },
 | 
| +                params: [{
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'eval',
 | 
| +                    range: [25, 29],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 25 },
 | 
| +                        end: { line: 1, column: 29 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                defaults: [],
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [],
 | 
| +                    range: [31, 33],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 31 },
 | 
| +                        end: { line: 1, column: 33 }
 | 
| +                    }
 | 
| +                },
 | 
| +                rest: null,
 | 
| +                generator: false,
 | 
| +                expression: false,
 | 
| +                range: [14, 33],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 33 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'EmptyStatement',
 | 
| +                range: [33, 34],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 33 },
 | 
| +                    end: { line: 1, column: 34 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 34],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 34 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 25,
 | 
| +                lineNumber: 1,
 | 
| +                column: 26,
 | 
| +                message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; function f(arguments) {};': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'FunctionDeclaration',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'f',
 | 
| +                    range: [23, 24],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 23 },
 | 
| +                        end: { line: 1, column: 24 }
 | 
| +                    }
 | 
| +                },
 | 
| +                params: [{
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'arguments',
 | 
| +                    range: [25, 34],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 25 },
 | 
| +                        end: { line: 1, column: 34 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                defaults: [],
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [],
 | 
| +                    range: [36, 38],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 36 },
 | 
| +                        end: { line: 1, column: 38 }
 | 
| +                    }
 | 
| +                },
 | 
| +                rest: null,
 | 
| +                generator: false,
 | 
| +                expression: false,
 | 
| +                range: [14, 38],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 38 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'EmptyStatement',
 | 
| +                range: [38, 39],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 38 },
 | 
| +                    end: { line: 1, column: 39 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 39],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 39 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 25,
 | 
| +                lineNumber: 1,
 | 
| +                column: 26,
 | 
| +                message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; function f(foo,  foo) {};': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'FunctionDeclaration',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'f',
 | 
| +                    range: [23, 24],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 23 },
 | 
| +                        end: { line: 1, column: 24 }
 | 
| +                    }
 | 
| +                },
 | 
| +                params: [{
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'foo',
 | 
| +                    range: [25, 28],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 25 },
 | 
| +                        end: { line: 1, column: 28 }
 | 
| +                    }
 | 
| +                }, {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'foo',
 | 
| +                    range: [31, 34],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 31 },
 | 
| +                        end: { line: 1, column: 34 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                defaults: [],
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [],
 | 
| +                    range: [36, 38],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 36 },
 | 
| +                        end: { line: 1, column: 38 }
 | 
| +                    }
 | 
| +                },
 | 
| +                rest: null,
 | 
| +                generator: false,
 | 
| +                expression: false,
 | 
| +                range: [14, 38],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 38 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'EmptyStatement',
 | 
| +                range: [38, 39],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 38 },
 | 
| +                    end: { line: 1, column: 39 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 39],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 39 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 31,
 | 
| +                lineNumber: 1,
 | 
| +                column: 32,
 | 
| +                message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; (function f(eval) {});': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'FunctionExpression',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'f',
 | 
| +                        range: [24, 25],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 24 },
 | 
| +                            end: { line: 1, column: 25 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    params: [{
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'eval',
 | 
| +                        range: [26, 30],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 26 },
 | 
| +                            end: { line: 1, column: 30 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    defaults: [],
 | 
| +                    body: {
 | 
| +                        type: 'BlockStatement',
 | 
| +                        body: [],
 | 
| +                        range: [32, 34],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 32 },
 | 
| +                            end: { line: 1, column: 34 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    rest: null,
 | 
| +                    generator: false,
 | 
| +                    expression: false,
 | 
| +                    range: [15, 34],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 34 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [14, 36],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 36 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 36],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 36 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 26,
 | 
| +                lineNumber: 1,
 | 
| +                column: 27,
 | 
| +                message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +
 | 
| +        '"use strict"; (function f(arguments) {});': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'FunctionExpression',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'f',
 | 
| +                        range: [24, 25],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 24 },
 | 
| +                            end: { line: 1, column: 25 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    params: [{
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'arguments',
 | 
| +                        range: [26, 35],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 26 },
 | 
| +                            end: { line: 1, column: 35 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    defaults: [],
 | 
| +                    body: {
 | 
| +                        type: 'BlockStatement',
 | 
| +                        body: [],
 | 
| +                        range: [37, 39],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 37 },
 | 
| +                            end: { line: 1, column: 39 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    rest: null,
 | 
| +                    generator: false,
 | 
| +                    expression: false,
 | 
| +                    range: [15, 39],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 39 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [14, 41],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 41 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 41],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 41 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 26,
 | 
| +                lineNumber: 1,
 | 
| +                column: 27,
 | 
| +                message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; (function f(foo,  foo) {});': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'FunctionExpression',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'f',
 | 
| +                        range: [24, 25],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 24 },
 | 
| +                            end: { line: 1, column: 25 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    params: [{
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'foo',
 | 
| +                        range: [26, 29],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 26 },
 | 
| +                            end: { line: 1, column: 29 }
 | 
| +                        }
 | 
| +                    }, {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'foo',
 | 
| +                        range: [32, 35],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 32 },
 | 
| +                            end: { line: 1, column: 35 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    defaults: [],
 | 
| +                    body: {
 | 
| +                        type: 'BlockStatement',
 | 
| +                        body: [],
 | 
| +                        range: [37, 39],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 37 },
 | 
| +                            end: { line: 1, column: 39 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    rest: null,
 | 
| +                    generator: false,
 | 
| +                    expression: false,
 | 
| +                    range: [15, 39],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 15 },
 | 
| +                        end: { line: 1, column: 39 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [14, 41],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 41 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 41],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 41 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 32,
 | 
| +                lineNumber: 1,
 | 
| +                column: 33,
 | 
| +                message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; x = { set f(eval) {} }' : {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'AssignmentExpression',
 | 
| +                    operator: '=',
 | 
| +                    left: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [14, 15],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 14 },
 | 
| +                            end: { line: 1, column: 15 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'ObjectExpression',
 | 
| +                        properties: [{
 | 
| +                            type: 'Property',
 | 
| +                            key: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'f',
 | 
| +                                range: [24, 25],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 24 },
 | 
| +                                    end: { line: 1, column: 25 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            value : {
 | 
| +                                type: 'FunctionExpression',
 | 
| +                                id: null,
 | 
| +                                params: [{
 | 
| +                                    type: 'Identifier',
 | 
| +                                    name: 'eval',
 | 
| +                                    range: [26, 30],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 26 },
 | 
| +                                        end: { line: 1, column: 30 }
 | 
| +                                    }
 | 
| +                                }],
 | 
| +                                defaults: [],
 | 
| +                                body: {
 | 
| +                                    type: 'BlockStatement',
 | 
| +                                    body: [],
 | 
| +                                    range: [32, 34],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 32 },
 | 
| +                                        end: { line: 1, column: 34 }
 | 
| +                                    }
 | 
| +                                },
 | 
| +                                rest: null,
 | 
| +                                generator: false,
 | 
| +                                expression: false,
 | 
| +                                range: [32, 34],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 32 },
 | 
| +                                    end: { line: 1, column: 34 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            kind: 'set',
 | 
| +                            range: [20, 34],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 20 },
 | 
| +                                end: { line: 1, column: 34 }
 | 
| +                            }
 | 
| +                        }],
 | 
| +                        range: [18, 36],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 18 },
 | 
| +                            end: { line: 1, column: 36 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [14, 36],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 14 },
 | 
| +                        end: { line: 1, column: 36 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [14, 36],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 36 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 36],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 36 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 26,
 | 
| +                lineNumber: 1,
 | 
| +                column: 27,
 | 
| +                message: 'Error: Line 1: Parameter name eval or arguments is not allowed in strict mode'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        'function hello() { "octal directive\\1"; "use strict"; }': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'FunctionDeclaration',
 | 
| +                id: {
 | 
| +                    type: 'Identifier',
 | 
| +                    name: 'hello',
 | 
| +                    range: [9, 14],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 9 },
 | 
| +                        end: { line: 1, column: 14 }
 | 
| +                    }
 | 
| +                },
 | 
| +                params: [],
 | 
| +                defaults: [],
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [{
 | 
| +                        type: 'ExpressionStatement',
 | 
| +                        expression: {
 | 
| +                            type: 'Literal',
 | 
| +                            value: 'octal directive\u0001',
 | 
| +                            raw: '"octal directive\\1"',
 | 
| +                            range: [19, 38],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 19 },
 | 
| +                                end: { line: 1, column: 38 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        range: [19, 39],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 19 },
 | 
| +                            end: { line: 1, column: 39 }
 | 
| +                        }
 | 
| +                    }, {
 | 
| +                        type: 'ExpressionStatement',
 | 
| +                        expression: {
 | 
| +                            type: 'Literal',
 | 
| +                            value: 'use strict',
 | 
| +                            raw: '"use strict"',
 | 
| +                            range: [40, 52],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 40 },
 | 
| +                                end: { line: 1, column: 52 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        range: [40, 53],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 40 },
 | 
| +                            end: { line: 1, column: 53 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [17, 55],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 17 },
 | 
| +                        end: { line: 1, column: 55 }
 | 
| +                    }
 | 
| +                },
 | 
| +                rest: null,
 | 
| +                generator: false,
 | 
| +                expression: false,
 | 
| +                range: [0, 55],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 55 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 55],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 55 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 19,
 | 
| +                lineNumber: 1,
 | 
| +                column: 20,
 | 
| +                message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"\\1"; \'use strict\';': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: '\u0001',
 | 
| +                    raw: '"\\1"',
 | 
| +                    range: [0, 4],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 4 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '\'use strict\'',
 | 
| +                    range: [6, 18],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 6 },
 | 
| +                        end: { line: 1, column: 18 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [6, 19],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 6 },
 | 
| +                    end: { line: 1, column: 19 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 19],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 19 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 0,
 | 
| +                lineNumber: 1,
 | 
| +                column: 1,
 | 
| +                message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; var x = { 014: 3}': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [18, 19],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 18 },
 | 
| +                            end: { line: 1, column: 19 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'ObjectExpression',
 | 
| +                        properties: [{
 | 
| +                            type: 'Property',
 | 
| +                            key: {
 | 
| +                                type: 'Literal',
 | 
| +                                value: 12,
 | 
| +                                raw: '014',
 | 
| +                                range: [24, 27],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 24 },
 | 
| +                                    end: { line: 1, column: 27 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            value: {
 | 
| +                                type: 'Literal',
 | 
| +                                value: 3,
 | 
| +                                raw: '3',
 | 
| +                                range: [29, 30],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 29 },
 | 
| +                                    end: { line: 1, column: 30 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            kind: 'init',
 | 
| +                            range: [24, 30],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 24 },
 | 
| +                                end: { line: 1, column: 30 }
 | 
| +                            }
 | 
| +                        }],
 | 
| +                        range: [22, 31],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 22 },
 | 
| +                            end: { line: 1, column: 31 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [18, 31],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 18 },
 | 
| +                        end: { line: 1, column: 31 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'var',
 | 
| +                range: [14, 31],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 31 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 31],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 31 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 24,
 | 
| +                lineNumber: 1,
 | 
| +                column: 25,
 | 
| +                message: 'Error: Line 1: Octal literals are not allowed in strict mode.'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; var x = { get i() {}, get i() {} }': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [18, 19],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 18 },
 | 
| +                            end: { line: 1, column: 19 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'ObjectExpression',
 | 
| +                        properties: [{
 | 
| +                            type: 'Property',
 | 
| +                            key: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'i',
 | 
| +                                range: [28, 29],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 28 },
 | 
| +                                    end: { line: 1, column: 29 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            value: {
 | 
| +                                type: 'FunctionExpression',
 | 
| +                                id: null,
 | 
| +                                params: [],
 | 
| +                                defaults: [],
 | 
| +                                body: {
 | 
| +                                    type: 'BlockStatement',
 | 
| +                                    body: [],
 | 
| +                                    range: [32, 34],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 32 },
 | 
| +                                        end: { line: 1, column: 34 }
 | 
| +                                    }
 | 
| +                                },
 | 
| +                                rest: null,
 | 
| +                                generator: false,
 | 
| +                                expression: false,
 | 
| +                                range: [32, 34],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 32 },
 | 
| +                                    end: { line: 1, column: 34 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            kind: 'get',
 | 
| +                            range: [24, 34],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 24 },
 | 
| +                                end: { line: 1, column: 34 }
 | 
| +                            }
 | 
| +                        }, {
 | 
| +                            type: 'Property',
 | 
| +                            key: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'i',
 | 
| +                                range: [40, 41],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 40 },
 | 
| +                                    end: { line: 1, column: 41 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            value: {
 | 
| +                                type: 'FunctionExpression',
 | 
| +                                id: null,
 | 
| +                                params: [],
 | 
| +                                defaults: [],
 | 
| +                                body: {
 | 
| +                                    type: 'BlockStatement',
 | 
| +                                    body: [],
 | 
| +                                    range: [44, 46],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 44 },
 | 
| +                                        end: { line: 1, column: 46 }
 | 
| +                                    }
 | 
| +                                },
 | 
| +                                rest: null,
 | 
| +                                generator: false,
 | 
| +                                expression: false,
 | 
| +                                range: [44, 46],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 44 },
 | 
| +                                    end: { line: 1, column: 46 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            kind: 'get',
 | 
| +                            range: [36, 46],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 36 },
 | 
| +                                end: { line: 1, column: 46 }
 | 
| +                            }
 | 
| +                        }],
 | 
| +                        range: [22, 48],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 22 },
 | 
| +                            end: { line: 1, column: 48 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [18, 48],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 18 },
 | 
| +                        end: { line: 1, column: 48 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'var',
 | 
| +                range: [14, 48],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 48 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 48],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 48 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 46,
 | 
| +                lineNumber: 1,
 | 
| +                column: 47,
 | 
| +                message: 'Error: Line 1: Object literal may not have multiple get/set accessors with the same name'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; var x = { i: 42, get i() {} }': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [18, 19],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 18 },
 | 
| +                            end: { line: 1, column: 19 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'ObjectExpression',
 | 
| +                        properties: [{
 | 
| +                            type: 'Property',
 | 
| +                            key: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'i',
 | 
| +                                range: [24, 25],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 24 },
 | 
| +                                    end: { line: 1, column: 25 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            value: {
 | 
| +                                type: 'Literal',
 | 
| +                                value: 42,
 | 
| +                                raw: '42',
 | 
| +                                range: [27, 29],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 27 },
 | 
| +                                    end: { line: 1, column: 29 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            kind: 'init',
 | 
| +                            range: [24, 29],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 24 },
 | 
| +                                end: { line: 1, column: 29 }
 | 
| +                            }
 | 
| +                        }, {
 | 
| +                            type: 'Property',
 | 
| +                            key: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'i',
 | 
| +                                range: [35, 36],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 35 },
 | 
| +                                    end: { line: 1, column: 36 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            value: {
 | 
| +                                type: 'FunctionExpression',
 | 
| +                                id: null,
 | 
| +                                params: [],
 | 
| +                                defaults: [],
 | 
| +                                body: {
 | 
| +                                    type: 'BlockStatement',
 | 
| +                                    body: [],
 | 
| +                                    range: [39, 41],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 39 },
 | 
| +                                        end: { line: 1, column: 41 }
 | 
| +                                    }
 | 
| +                                },
 | 
| +                                rest: null,
 | 
| +                                generator: false,
 | 
| +                                expression: false,
 | 
| +                                range: [39, 41],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 39 },
 | 
| +                                    end: { line: 1, column: 41 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            kind: 'get',
 | 
| +                            range: [31, 41],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 31 },
 | 
| +                                end: { line: 1, column: 41 }
 | 
| +                            }
 | 
| +                        }],
 | 
| +                        range: [22, 43],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 22 },
 | 
| +                            end: { line: 1, column: 43 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [18, 43],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 18 },
 | 
| +                        end: { line: 1, column: 43 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'var',
 | 
| +                range: [14, 43],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 43 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 43],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 43 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 41,
 | 
| +                lineNumber: 1,
 | 
| +                column: 42,
 | 
| +                message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '"use strict"; var x = { set i(x) {}, i: 42 }': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 'use strict',
 | 
| +                    raw: '"use strict"',
 | 
| +                    range: [0, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 13],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 13 }
 | 
| +                }
 | 
| +            }, {
 | 
| +                type: 'VariableDeclaration',
 | 
| +                declarations: [{
 | 
| +                    type: 'VariableDeclarator',
 | 
| +                    id: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'x',
 | 
| +                        range: [18, 19],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 18 },
 | 
| +                            end: { line: 1, column: 19 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    init: {
 | 
| +                        type: 'ObjectExpression',
 | 
| +                        properties: [{
 | 
| +                            type: 'Property',
 | 
| +                            key: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'i',
 | 
| +                                range: [28, 29],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 28 },
 | 
| +                                    end: { line: 1, column: 29 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            value: {
 | 
| +                                type: 'FunctionExpression',
 | 
| +                                id: null,
 | 
| +                                params: [{
 | 
| +                                    type: 'Identifier',
 | 
| +                                    name: 'x',
 | 
| +                                    range: [30, 31],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 30 },
 | 
| +                                        end: { line: 1, column: 31 }
 | 
| +                                    }
 | 
| +                                }],
 | 
| +                                defaults: [],
 | 
| +                                body: {
 | 
| +                                    type: 'BlockStatement',
 | 
| +                                    body: [],
 | 
| +                                    range: [33, 35],
 | 
| +                                    loc: {
 | 
| +                                        start: { line: 1, column: 33 },
 | 
| +                                        end: { line: 1, column: 35 }
 | 
| +                                    }
 | 
| +                                },
 | 
| +                                rest: null,
 | 
| +                                generator: false,
 | 
| +                                expression: false,
 | 
| +                                range: [33, 35],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 33 },
 | 
| +                                    end: { line: 1, column: 35 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            kind: 'set',
 | 
| +                            range: [24, 35],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 24 },
 | 
| +                                end: { line: 1, column: 35 }
 | 
| +                            }
 | 
| +                        }, {
 | 
| +                            type: 'Property',
 | 
| +                            key: {
 | 
| +                                type: 'Identifier',
 | 
| +                                name: 'i',
 | 
| +                                range: [37, 38],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 37 },
 | 
| +                                    end: { line: 1, column: 38 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            value: {
 | 
| +                                type: 'Literal',
 | 
| +                                value: 42,
 | 
| +                                raw: '42',
 | 
| +                                range: [40, 42],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 40 },
 | 
| +                                    end: { line: 1, column: 42 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            kind: 'init',
 | 
| +                            range: [37, 42],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 37 },
 | 
| +                                end: { line: 1, column: 42 }
 | 
| +                            }
 | 
| +                        }],
 | 
| +                        range: [22, 44],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 22 },
 | 
| +                            end: { line: 1, column: 44 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [18, 44],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 18 },
 | 
| +                        end: { line: 1, column: 44 }
 | 
| +                    }
 | 
| +                }],
 | 
| +                kind: 'var',
 | 
| +                range: [14, 44],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 14 },
 | 
| +                    end: { line: 1, column: 44 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 44],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 44 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 42,
 | 
| +                lineNumber: 1,
 | 
| +                column: 43,
 | 
| +                message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
 | 
| +            }]
 | 
| +
 | 
| +
 | 
| +        },
 | 
| +
 | 
| +        '({ set s() { } })': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'ObjectExpression',
 | 
| +                    properties: [{
 | 
| +                        type: 'Property',
 | 
| +                        key: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 's',
 | 
| +                            range: [7, 8],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 7 },
 | 
| +                                end: { line: 1, column: 8 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        value: {
 | 
| +                            type: 'FunctionExpression',
 | 
| +                            id: null,
 | 
| +                            params: [],
 | 
| +                            defaults: [],
 | 
| +                            body: {
 | 
| +                                type: 'BlockStatement',
 | 
| +                                body: [],
 | 
| +                                range: [11, 14],
 | 
| +                                loc: {
 | 
| +                                    start: { line: 1, column: 11 },
 | 
| +                                    end: { line: 1, column: 14 }
 | 
| +                                }
 | 
| +                            },
 | 
| +                            rest: null,
 | 
| +                            generator: false,
 | 
| +                            expression: false,
 | 
| +                            range: [11, 14],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 11 },
 | 
| +                                end: { line: 1, column: 14 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        kind: 'set',
 | 
| +                        range: [3, 14],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 3 },
 | 
| +                            end: { line: 1, column: 14 }
 | 
| +                        }
 | 
| +                    }],
 | 
| +                    range: [1, 16],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 1 },
 | 
| +                        end: { line: 1, column: 16 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 17],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 17 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 17],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 17 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 9,
 | 
| +                lineNumber: 1,
 | 
| +                column: 10,
 | 
| +                message: 'Error: Line 1: Unexpected token )'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        'foo("bar") = baz': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'AssignmentExpression',
 | 
| +                    operator: '=',
 | 
| +                    left: {
 | 
| +                        type: 'CallExpression',
 | 
| +                        callee: {
 | 
| +                            type: 'Identifier',
 | 
| +                            name: 'foo',
 | 
| +                            range: [0, 3],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 0 },
 | 
| +                                end: { line: 1, column: 3 }
 | 
| +                            }
 | 
| +                        },
 | 
| +                        'arguments': [{
 | 
| +                            type: 'Literal',
 | 
| +                            value: 'bar',
 | 
| +                            raw: '"bar"',
 | 
| +                            range: [4, 9],
 | 
| +                            loc: {
 | 
| +                                start: { line: 1, column: 4 },
 | 
| +                                end: { line: 1, column: 9 }
 | 
| +                            }
 | 
| +                        }],
 | 
| +                        range: [0, 10],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 10 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Identifier',
 | 
| +                        name: 'baz',
 | 
| +                        range: [13, 16],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 13 },
 | 
| +                            end: { line: 1, column: 16 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 16],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 16 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 16],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 16],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 16 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 10,
 | 
| +                lineNumber: 1,
 | 
| +                column: 11,
 | 
| +                message: 'Error: Line 1: Invalid left-hand side in assignment'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '1 = 2': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'AssignmentExpression',
 | 
| +                    operator: '=',
 | 
| +                    left: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 1,
 | 
| +                        raw: '1',
 | 
| +                        range: [0, 1],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 1 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    right: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 2,
 | 
| +                        raw: '2',
 | 
| +                        range: [4, 5],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 4 },
 | 
| +                            end: { line: 1, column: 5 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    range: [0, 5],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 5 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 5],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 5 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 5],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 5 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 1,
 | 
| +                lineNumber: 1,
 | 
| +                column: 2,
 | 
| +                message: 'Error: Line 1: Invalid left-hand side in assignment'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '3++': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'UpdateExpression',
 | 
| +                    operator: '++',
 | 
| +                    argument: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 3,
 | 
| +                        raw: '3',
 | 
| +                        range: [0, 1],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 0 },
 | 
| +                            end: { line: 1, column: 1 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    prefix: false,
 | 
| +                    range: [0, 3],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 3 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 3],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 3 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 3],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 3 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 1,
 | 
| +                lineNumber: 1,
 | 
| +                column: 2,
 | 
| +                message: 'Error: Line 1: Invalid left-hand side in assignment'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        '--4': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ExpressionStatement',
 | 
| +                expression: {
 | 
| +                    type: 'UpdateExpression',
 | 
| +                    operator: '--',
 | 
| +                    argument: {
 | 
| +                        type: 'Literal',
 | 
| +                        value: 4,
 | 
| +                        raw: '4',
 | 
| +                        range: [2, 3],
 | 
| +                        loc: {
 | 
| +                            start: { line: 1, column: 2 },
 | 
| +                            end: { line: 1, column: 3 }
 | 
| +                        }
 | 
| +                    },
 | 
| +                    prefix: true,
 | 
| +                    range: [0, 3],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 0 },
 | 
| +                        end: { line: 1, column: 3 }
 | 
| +                    }
 | 
| +                },
 | 
| +                range: [0, 3],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 3 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 3],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 3 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 3,
 | 
| +                lineNumber: 1,
 | 
| +                column: 4,
 | 
| +                message: 'Error: Line 1: Invalid left-hand side in assignment'
 | 
| +            }]
 | 
| +        },
 | 
| +
 | 
| +        'for (5 in []) {}': {
 | 
| +            type: 'Program',
 | 
| +            body: [{
 | 
| +                type: 'ForInStatement',
 | 
| +                left: {
 | 
| +                    type: 'Literal',
 | 
| +                    value: 5,
 | 
| +                    raw: '5',
 | 
| +                    range: [5, 6],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 5 },
 | 
| +                        end: { line: 1, column: 6 }
 | 
| +                    }
 | 
| +                },
 | 
| +                right: {
 | 
| +                    type: 'ArrayExpression',
 | 
| +                    elements: [],
 | 
| +                    range: [10, 12],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 10 },
 | 
| +                        end: { line: 1, column: 12 }
 | 
| +                    }
 | 
| +                },
 | 
| +                body: {
 | 
| +                    type: 'BlockStatement',
 | 
| +                    body: [],
 | 
| +                    range: [14, 16],
 | 
| +                    loc: {
 | 
| +                        start: { line: 1, column: 14 },
 | 
| +                        end: { line: 1, column: 16 }
 | 
| +                    }
 | 
| +                },
 | 
| +                each: false,
 | 
| +                range: [0, 16],
 | 
| +                loc: {
 | 
| +                    start: { line: 1, column: 0 },
 | 
| +                    end: { line: 1, column: 16 }
 | 
| +                }
 | 
| +            }],
 | 
| +            range: [0, 16],
 | 
| +            loc: {
 | 
| +                start: { line: 1, column: 0 },
 | 
| +                end: { line: 1, column: 16 }
 | 
| +            },
 | 
| +            errors: [{
 | 
| +                index: 6,
 | 
| +                lineNumber: 1,
 | 
| +                column: 7,
 | 
| +                message: 'Error: Line 1: Invalid left-hand side in for-in'
 | 
| +            }]
 | 
| +        }
 | 
| +
 | 
| +
 | 
| +    }
 | 
| +};
 | 
| +
 | 
| 
 |