text: /*
    Copyright (C) 2013 Mathias Bynens <mathias@qiwi.be>
    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, 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 }
              },
              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, 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 }
              },
              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, 7],
                  loc: {
                      start: { line: 2, column: 4 },
                      end: { line: 2, column: 6 }
                  }
              }],
              range: [5, 7],
              loc: {
                  start: { line: 2, column: 4 },
                  end: { line: 2, column: 6 }
              },
              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 }
              }
          },
  
          'x = { __proto__: 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: '__proto__',
                              range: [6, 15],
                              loc: {
                                  start: { line: 1, column: 6 },
                                  end: { line: 1, column: 15 }
                              }
                          },
                          value: {
                              type: 'Literal',
                              value: 2,
                              raw: '2',
                              range: [17, 18],
                              loc: {
                                  start: { line: 1, column: 17 },
                                  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 = {"__proto__": 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: 'Literal',
                              value: '__proto__',
                              raw: '"__proto__"',
                              range: [5, 16],
                              loc: {
                                  start: { line: 1, column: 5 },
                                  end: { line: 1, column: 16 }
                              }
                          },
                          value: {
                              type: 'Literal',
                              value: 2,
                              raw: '2',
                              range: [18, 19],
                              loc: {
                                  start: { line: 1, column: 18 },
                                  end: { line: 1, column: 19 }
                              }
                          },
                          kind: 'init',
                          range: [5, 19],
                          loc: {
                              start: { line: 1, column: 5 },
                              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 width() { return m_width }, set width(width) { m_width = 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 }
                          }
                      }, {
                          type: 'Property',
                          key: {
                              type: 'Identifier',
                              name: 'width',
                              range: [42, 47],
                              loc: {
                                  start: { line: 1, column: 42 },
                                  end: { line: 1, column: 47 }
                              }
                          },
                          value: {
                              type: 'FunctionExpression',
                              id: null,
                              params: [{
                                  type: 'Identifier',
                                  name: 'width',
                                  range: [48, 53],
                                  loc: {
                                      start: { line: 1, column: 48 },
                                      end: { line: 1, column: 53 }
                                  }
                              }],
                              defaults: [],
                              body: {
                                  type: 'BlockStatement',
                                  body: [{
                                      type: 'ExpressionStatement',
                                      expression: {
                                          type: 'AssignmentExpression',
                                          operator: '=',
                                          left: {
                                              type: 'Identifier',
                                              name: 'm_width',
                                              range: [57, 64],
                                              loc: {
                                                  start: { line: 1, column: 57 },
                                                  end: { line: 1, column: 64 }
                                              }
                                          },
                                          right: {
                                              type: 'Identifier',
                                              name: 'width',
                                              range: [67, 72],
                                              loc: {
                                                  start: { line: 1, column: 67 },
                                                  end: { line: 1, column: 72 }
                                              }
                                          },
                                          range: [57, 72],
                                          loc: {
                                              start: { line: 1, column: 57 },
                                              end: { line: 1, column: 72 }
                                          }
                                      },
                                      range: [57, 73],
                                      loc: {
                                          start: { line: 1, column: 57 },
                                          end: { line: 1, column: 73 }
                                      }
                                  }],
                                  range: [55, 75],
                                  loc: {
                                      start: { line: 1, column: 55 },
                                      end: { line: 1, column: 75 }
                                  }
                              },
                              rest: null,
                              generator: false,
                              expression: false,
                              range: [55, 75],
                              loc: {
                                  start: { line: 1, column: 55 },
                                  end: { line: 1, column: 75 }
                              }
                          },
                          kind: 'set',
                          range: [38, 75],
                          loc: {
                              start: { line: 1, column: 38 },
                              end: { line: 1, column: 75 }
                          }
                      }],
                      range: [4, 77],
                      loc: {
                          start: { line: 1, column: 4 },
                          end: { line: 1, column: 77 }
                      }
                  },
                  range: [0, 77],
                  loc: {
                      start: { line: 1, column: 0 },
                      end: { line: 1, column: 77 }
                  }
              },
              range: [0, 77],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 77 }
              }
          }
  
  
      },
  
      '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 /* block comment 1 */ /* block comment 2 */': {
              "type": "Program",
              "body": [
                  {
                      "type": "ExpressionStatement",
                      "expression": {
                          "type": "Literal",
                          "value": 42,
                          "raw": "42",
                          "range": [
                              0,
                              2
                          ],
                          "trailingComments": [
                              {
                                  "type": "Block",
                                  "value": " block comment 1 ",
                                  "range": [
                                      3,
                                      24
                                  ]
                              },
                              {
                                  "type": "Block",
                                  "value": " block comment 2 ",
                                  "range": [
                                      25,
                                      46
                                  ]
                              }
                          ]
                      },
                      "range": [
                          0,
                          46
                      ]
                  }
              ],
              "range": [
                  0,
                  46
              ],
              "comments": [
                  {
                      "type": "Block",
                      "value": " block comment 1 ",
                      "range": [
                          3,
                          24
                      ]
                  },
                  {
                      "type": "Block",
                      "value": " block comment 2 ",
                      "range": [
                          25,
                          46
                      ]
                  }
              ],
              "tokens": [
                  {
                      "type": "Numeric",
                      "range": [
                          0,
                          2
                      ],
                      "value": "42"
                  }
              ]
          },
  
          'var p1;/* block comment 1 */ /* block comment 2 */': {
              "range": [
                  0,
                  7
              ],
              "loc": {
                  "start": {
                      "line": 1,
                      "column": 0
                  },
                  "end": {
                      "line": 1,
                      "column": 7
                  }
              },
              "type": "Program",
              "body": [
                  {
                      "range": [
                          0,
                          7
                      ],
                      "loc": {
                          "start": {
                              "line": 1,
                              "column": 0
                          },
                          "end": {
                              "line": 1,
                              "column": 7
                          }
                      },
                      "type": "VariableDeclaration",
                      "declarations": [
                          {
                              "range": [
                                  4,
                                  6
                              ],
                              "loc": {
                                  "start": {
                                      "line": 1,
                                      "column": 4
                                  },
                                  "end": {
                                      "line": 1,
                                      "column": 6
                                  }
                              },
                              "type": "VariableDeclarator",
                              "id": {
                                  "range": [
                                      4,
                                      6
                                  ],
                                  "loc": {
                                      "start": {
                                          "line": 1,
                                          "column": 4
                                      },
                                      "end": {
                                          "line": 1,
                                          "column": 6
                                      }
                                  },
                                  "type": "Identifier",
                                  "name": "p1"
                              },
                              "init": null
                          }
                      ],
                      "kind": "var",
                      "trailingComments": [
                          {
                              "range": [
                                  7,
                                  28
                              ],
                              "loc": {
                                  "start": {
                                      "line": 1,
                                      "column": 7
                                  },
                                  "end": {
                                      "line": 1,
                                      "column": 28
                                  }
                              },
                              "type": "Block",
                              "value": " block comment 1 "
                          },
                          {
                              "range": [
                                  29,
                                  50
                              ],
                              "loc": {
                                  "start": {
                                      "line": 1,
                                      "column": 29
                                  },
                                  "end": {
                                      "line": 1,
                                      "column": 50
                                  }
                              },
                              "type": "Block",
                              "value": " block comment 2 "
                          }
                      ]
                  }
              ],
              "comments": [
                  {
                      "range": [
                          7,
                          28
                      ],
                      "loc": {
                          "start": {
                              "line": 1,
                              "column": 7
                          },
                          "end": {
                              "line": 1,
                              "column": 28
                          }
                      },
                      "type": "Block",
                      "value": " block comment 1 "
                  },
                  {
                      "range": [
                          29,
                          50
                      ],
                      "loc": {
                          "start": {
                              "line": 1,
                              "column": 29
                          },
                          "end": {
                              "line": 1,
                              "column": 50
                          }
                      },
                      "type": "Block",
                      "value": " block comment 2 "
                  }
              ],
              "tokens": [
                  {
                      "range": [
                          0,
                          3
                      ],
                      "loc": {
                          "start": {
                              "line": 1,
                              "column": 0
                          },
                          "end": {
                              "line": 1,
                              "column": 3
                          }
                      },
                      "type": "Keyword",
                      "value": "var"
                  },
                  {
                      "range": [
                          4,
                          6
                      ],
                      "loc": {
                          "start": {
                              "line": 1,
                              "column": 4
                          },
                          "end": {
                              "line": 1,
                              "column": 6
                          }
                      },
                      "type": "Identifier",
                      "value": "p1"
                  },
                  {
                      "range": [
                          6,
                          7
                      ],
                      "loc": {
                          "start": {
                              "line": 1,
                              "column": 6
                          },
                          "end": {
                              "line": 1,
                              "column": 7
                          }
                      },
                      "type": "Punctuator",
                      "value": ";"
                  }
              ]
          },
  
          '/*42*/': {
              "range": [
                  6,
                  6
              ],
              "loc": {
                  "start": {
                      "line": 1,
                      "column": 6
                  },
                  "end": {
                      "line": 1,
                      "column": 6
                  }
              },
              "type": "Program",
              "body": [],
              "leadingComments": [
                  {
                      "range": [
                          0,
                          6
                      ],
                      "loc": {
                          "start": {
                              "line": 1,
                              "column": 0
                          },
                          "end": {
                              "line": 1,
                              "column": 6
                          }
                      },
                      "type": "Block",
                      "value": "42"
                  }
              ],
              "comments": [
                  {
                      "range": [
                          0,
                          6
                      ],
                      "loc": {
                          "start": {
                              "line": 1,
                              "column": 0
                          },
                          "end": {
                              "line": 1,
                              "column": 6
                          }
                      },
                      "type": "Block",
                      "value": "42"
                  }
              ],
              "tokens": []
          },
  
          '(a + /* assignmenr */b ) * c': {
              "type": "Program",
              "body": [
                  {
                      "type": "ExpressionStatement",
                      "expression": {
                          "type": "BinaryExpression",
                          "operator": "*",
                          "left": {
                              "type": "BinaryExpression",
                              "operator": "+",
                              "left": {
                                  "type": "Identifier",
                                  "name": "a",
                                  "range": [
                                      1,
                                      2
                                  ],
                                  "loc": {
                                      "start": {
                                          "line": 1,
                                          "column": 1
                                      },
                                      "end": {
                                          "line": 1,
                                          "column": 2
                                      }
                                  }
                              },
                              "right": {
                                  "type": "Identifier",
                                  "name": "b",
                                  "range": [
                                      21,
                                      22
                                  ],
                                  "loc": {
                                      "start": {
                                          "line": 1,
                                          "column": 21
                                      },
                                      "end": {
                                          "line": 1,
                                          "column": 22
                                      }
                                  },
                                  "leadingComments": [
                                      {
                                          "type": "Block",
                                          "value": " assignmenr ",
                                          "range": [
                                              5,
                                              21
                                          ],
                                          "loc": {
                                              "start": {
                                                  "line": 1,
                                                  "column": 5
                                              },
                                              "end": {
                                                  "line": 1,
                                                  "column": 21
                                              }
                                          }
                                      }
                                  ]
                              },
                              "range": [
                                  1,
                                  22
                              ],
                              "loc": {
                                  "start": {
                                      "line": 1,
                                      "column": 1
                                  },
                                  "end": {
                                      "line": 1,
                                      "column": 22
                                  }
                              }
                          },
                          "right": {
                              "type": "Identifier",
                              "name": "c",
                              "range": [
                                  27,
                                  28
                              ],
                              "loc": {
                                  "start": {
                                      "line": 1,
                                      "column": 27
                                  },
                                  "end": {
                                      "line": 1,
                                      "column": 28
                                  }
                              }
                          },
                          "range": [
                              0,
                              28
                          ],
                          "loc": {
                              "start": {
                                  "line": 1,
                                  "column": 0
                              },
                              "end": {
                                  "line": 1,
                                  "column": 28
                              }
                          }
                      },
                      "range": [
                          0,
                          28
                      ],
                      "loc": {
                          "start": {
                              "line": 1,
                              "column": 0
                          },
                          "end": {
                              "line": 1,
                              "column": 28
                          }
                      }
                  }
              ],
              "range": [
                  0,
                  28
              ],
              "loc": {
                  "start": {
                      "line": 1,
                      "column": 0
                  },
                  "end": {
                      "line": 1,
                      "column": 28
                  }
              },
              "comments": [
                  {
                      "type": "Block",
                      "value": " assignmenr ",
                      "range": [
                          5,
                          21
                      ],
                      "loc": {
                          "start": {
                              "line": 1,
                              "column": 5
                          },
                          "end": {
                              "line": 1,
                              "column": 21
                          }
                      }
                  }
              ]
          },
  
          '/* assignmenr */\n a = b': {
              "type": "Program",
              "body": [
                  {
                      "type": "ExpressionStatement",
                      "expression": {
                          "type": "AssignmentExpression",
                          "operator": "=",
                          "left": {
                              "type": "Identifier",
                              "name": "a",
                              "range": [
                                  18,
                                  19
                              ],
                              "loc": {
                                  "start": {
                                      "line": 2,
                                      "column": 1
                                  },
                                  "end": {
                                      "line": 2,
                                      "column": 2
                                  }
                              }
                          },
                          "right": {
                              "type": "Identifier",
                              "name": "b",
                              "range": [
                                  22,
                                  23
                              ],
                              "loc": {
                                  "start": {
                                      "line": 2,
                                      "column": 5
                                  },
                                  "end": {
                                      "line": 2,
                                      "column": 6
                                  }
                              }
                          },
                          "range": [
                              18,
                              23
                          ],
                          "loc": {
                              "start": {
                                  "line": 2,
                                  "column": 1
                              },
                              "end": {
                                  "line": 2,
                                  "column": 6
                              }
                          }
                      },
                      "range": [
                          18,
                          23
                      ],
                      "loc": {
                          "start": {
                              "line": 2,
                              "column": 1
                          },
                          "end": {
                              "line": 2,
                              "column": 6
                          }
                      },
                      "leadingComments": [
                          {
                              "type": "Block",
                              "value": " assignmenr ",
                              "range": [
                                  0,
                                  16
                              ],
                              "loc": {
                                  "start": {
                                      "line": 1,
                                      "column": 0
                                  },
                                  "end": {
                                      "line": 1,
                                      "column": 16
                                  }
                              }
                          }
                      ]
                  }
              ],
              "range": [
                  18,
                  23
              ],
              "loc": {
                  "start": {
                      "line": 2,
                      "column": 1
                  },
                  "end": {
                      "line": 2,
                      "column": 6
                  }
              },
              "comments": [
                  {
                      "type": "Block",
                      "value": " assignmenr ",
                      "range": [
                          0,
                          16
                      ],
                      "loc": {
                          "start": {
                              "line": 1,
                              "column": 0
                          },
                          "end": {
                              "line": 1,
                              "column": 16
                          }
                      }
                  }
              ]
          },
  
          '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]
              }]
          },
  
          '42 /* the * answer */': {
              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 }
              }
          },
  
          '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 * answer ',
                  range: [3, 21],
                  loc: {
                      start: { line: 1, column: 3 },
                      end: { line: 1, column: 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 }
                  },
                  leadingComments: [{
                      type: 'Block',
                      value: 'a\r\nb',
                      range: [0, 8],
                      loc: {
                          start: { line: 1, column: 0 },
                          end: { line: 2, column: 3 }
                      }
                  }]
              }],
              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 }
                  },
                  leadingComments: [{
                      type: 'Block',
                      value: 'a\nb',
                      range: [0, 7],
                      loc: {
                          start: { line: 1, column: 0 },
                          end: { line: 2, column: 3 }
                      }
                  }]
              }],
              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',
                      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 }
                  },
                  leadingComments: [{
                      type: 'Block',
                      value: 'a\nc',
                      range: [0, 7],
                      loc: {
                          start: { line: 1, column: 0 },
                          end: { line: 2, column: 3 }
                      }
                  }]
              }],
              range: [8, 10],
              loc: {
                  start: { line: 2, column: 4 },
                  end: { line: 2, column: 6 }
              },
              comments: [{
                  type: 'Block',
                  value: 'a\nc',
                  range: [0, 7],
                  loc: {
                      start: { line: 1, column: 0 },
                      end: { line: 2, column: 3 }
                  }
              }]
          },
  
          '// one\\n': {
              type: 'Program',
              body: [],
              range: [8, 8],
              loc: {
                  start: { line: 1, column: 8 },
                  end: { line: 1, column: 8 }
              },
              leadingComments: [{
                  type: 'Line',
                  value: ' one\\n',
                  range: [0, 8],
                  loc: {
                      start: { line: 1, column: 0 },
                      end: { line: 1, column: 8 }
                  }
              }],
              comments: [{
                  type: 'Line',
                  value: ' one\\n',
                  range: [0, 8],
                  loc: {
                      start: { line: 1, column: 0 },
                      end: { line: 1, column: 8 }
                  }
              }]
          },
  
          '// 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 }
                      },
                      trailingComments: [{
                          type: 'Line',
                          value: ' line comment',
                          range: [3, 18],
                          loc: {
                              start: { line: 1, column: 3 },
                              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 }
              },
              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 }
                  },
                  leadingComments: [{
                      type: 'Line',
                      value: ' Hello, world!',
                      range: [0, 16],
                      loc: {
                          start: { line: 1, column: 0 },
                          end: { line: 1, column: 16 }
                      }
                  }]
              }],
              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 }
                  },
                  leadingComments: [{
                      type: 'Line',
                      value: '',
                      range: [0, 2],
                      loc: {
                          start: { line: 1, column: 0 },
                          end: { line: 1, 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 }
                  },
                  leadingComments: [{
                      type: 'Block',
                      value: '',
                      range: [0, 4],
                      loc: {
                          start: { line: 1, column: 0 },
                          end: { line: 1, column: 4 }
                      }
                  }]
              }],
              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 }
                  }
              }]
          },
  
          '42/**/': {
              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 }
                      },
                      trailingComments: [{
                          type: 'Block',
                          value: '',
                          range: [2, 6],
                          loc: {
                              start: { line: 1, column: 2 },
                              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 }
              },
              comments: [{
                  type: 'Block',
                  value: '',
                  range: [2, 6],
                  loc: {
                      start: { line: 1, column: 2 },
                      end: { line: 1, column: 6 }
                  }
              }]
          },
  
          '// 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 }
                  },
                  leadingComments: [{
                      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 }
                      }
                  }]
              }],
              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) { doThat() // Some comment\n }': {
              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: [9, 15],
                                  loc: {
                                      start: { line: 1, column: 9 },
                                      end: { line: 1, column: 15 }
                                  }
                              },
                              'arguments': [],
                              range: [9, 17],
                              loc: {
                                  start: { line: 1, column: 9 },
                                  end: { line: 1, column: 17 }
                              }
                          },
                          range: [9, 17],
                          loc: {
                              start: { line: 1, column: 9 },
                              end: { line: 1, column: 17 }
                          },
                          trailingComments: [{
                              type: 'Line',
                              value: ' Some comment',
                              range: [18, 33],
                              loc: {
                                  start: { line: 1, column: 18 },
                                  end: { line: 1, column: 33 }
                              }
                          }]
                      }],
                      range: [7, 36],
                      loc: {
                          start: { line: 1, column: 7 },
                          end: { line: 2, column: 2 }
                      }
                  },
                  alternate: null,
                  range: [0, 36],
                  loc: {
                      start: { line: 1, column: 0 },
                      end: { line: 2, column: 2 }
                  }
              }],
              range: [0, 36],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 2, column: 2 }
              },
              comments: [{
                  type: 'Line',
                  value: ' Some comment',
                  range: [18, 33],
                  loc: {
                      start: { line: 1, column: 18 },
                      end: { line: 1, column: 33 }
                  }
              }]
          },
  
          '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 }
                          },
                          leadingComments: [{
                              type: 'Line',
                              value: ' Some comment',
                              range: [9, 24],
                              loc: {
                                  start: { line: 1, column: 9 },
                                  end: { line: 1, column: 24 }
                              }
                          }]
                      }],
                      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 }
                  }
              }]
          },
  
          'if (x) { /* Some comment */ doThat() }': {
              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: [28, 34],
                                  loc: {
                                      start: { line: 1, column: 28 },
                                      end: { line: 1, column: 34 }
                                  }
                              },
                              'arguments': [],
                              range: [28, 36],
                              loc: {
                                  start: { line: 1, column: 28 },
                                  end: { line: 1, column: 36 }
                              }
                          },
                          range: [28, 37],
                          loc: {
                              start: { line: 1, column: 28 },
                              end: { line: 1, column: 37 }
                          },
                          leadingComments: [{
                              type: 'Block',
                              value: ' Some comment ',
                              range: [9, 27],
                              loc: {
                                  start: { line: 1, column: 9 },
                                  end: { line: 1, column: 27 }
                              }
                          }]
                      }],
                      range: [7, 38],
                      loc: {
                          start: { line: 1, column: 7 },
                          end: { line: 1, column: 38 }
                      }
                  },
                  alternate: null,
                  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 }
              },
              comments: [{
                  type: 'Block',
                  value: ' Some comment ',
                  range: [9, 27],
                  loc: {
                      start: { line: 1, column: 9 },
                      end: { line: 1, column: 27 }
                  }
              }]
          },
  
          'if (x) { doThat() /* Some comment */ }': {
              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: [9, 15],
                                  loc: {
                                      start: { line: 1, column: 9 },
                                      end: { line: 1, column: 15 }
                                  }
                              },
                              'arguments': [],
                              range: [9, 17],
                              loc: {
                                  start: { line: 1, column: 9 },
                                  end: { line: 1, column: 17 }
                              },
                              trailingComments: [{
                                  type: 'Block',
                                  value: ' Some comment ',
                                  range: [18, 36],
                                  loc: {
                                      start: { line: 1, column: 18 },
                                      end: { line: 1, column: 36 }
                                  }
                              }]
                          },
                          range: [9, 37],
                          loc: {
                              start: { line: 1, column: 9 },
                              end: { line: 1, column: 37 }
                          }
                      }],
                      range: [7, 38],
                      loc: {
                          start: { line: 1, column: 7 },
                          end: { line: 1, column: 38 }
                      }
                  },
                  alternate: null,
                  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 }
              },
              comments: [{
                  type: 'Block',
                  value: ' Some comment ',
                  range: [18, 36],
                  loc: {
                      start: { line: 1, column: 18 },
                      end: { line: 1, column: 36 }
                  }
              }]
          },
  
          '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 }
                          },
                          leadingComments: [{
                              type: 'Block',
                              value: ' perfect ',
                              range: [27, 40],
                              loc: {
                                  start: { line: 1, column: 27 },
                                  end: { line: 1, column: 40 }
                              }
                          }]
                      }],
                      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 }
                  }
              }]
          },
  
          'switch (answer) { case 42: bingo() /* perfect */ }': {
              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: [27, 32],
                                  loc: {
                                      start: { line: 1, column: 27 },
                                      end: { line: 1, column: 32 }
                                  }
                              },
                              'arguments': [],
                              range: [27, 34],
                              loc: {
                                  start: { line: 1, column: 27 },
                                  end: { line: 1, column: 34 }
                              },
                              trailingComments: [{
                                  type: 'Block',
                                  value: ' perfect ',
                                  range: [35, 48],
                                  loc: {
                                      start: { line: 1, column: 35 },
                                      end: { line: 1, column: 48 }
                                  }
                              }]
                          },
                          range: [27, 49],
                          loc: {
                              start: { line: 1, column: 27 },
                              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: [35, 48],
                  loc: {
                      start: { line: 1, column: 35 },
                      end: { line: 1, column: 48 }
                  }
              }]
          },
  
          '/* header */ (function(){ var version = 1; }).call(this)': {
              type: 'Program',
              body: [{
                  type: 'ExpressionStatement',
                  expression: {
                      type: 'CallExpression',
                      callee: {
                          type: 'MemberExpression',
                          computed: false,
                          object: {
                              type: 'FunctionExpression',
                              id: null,
                              params: [],
                              defaults: [],
                              body: {
                                  type: 'BlockStatement',
                                  body: [{
                                      type: 'VariableDeclaration',
                                      declarations: [{
                                          type: 'VariableDeclarator',
                                          id: {
                                              type: 'Identifier',
                                              name: 'version',
                                              range: [30, 37],
                                              loc: {
                                                  start: { line: 1, column: 30 },
                                                  end: { line: 1, column: 37 }
                                              }
                                          },
                                          init: {
                                              type: 'Literal',
                                              value: 1,
                                              raw: '1',
                                              range: [40, 41],
                                              loc: {
                                                  start: { line: 1, column: 40 },
                                                  end: { line: 1, column: 41 }
                                              }
                                          },
                                          range: [30, 41],
                                          loc: {
                                              start: { line: 1, column: 30 },
                                              end: { line: 1, column: 41 }
                                          }
                                      }],
                                      kind: 'var',
                                      range: [26, 42],
                                      loc: {
                                          start: { line: 1, column: 26 },
                                          end: { line: 1, column: 42 }
                                      }
                                  }],
                                  range: [24, 44],
                                  loc: {
                                      start: { line: 1, column: 24 },
                                      end: { line: 1, column: 44 }
                                  }
                              },
                              rest: null,
                              generator: false,
                              expression: false,
                              range: [14, 44],
                              loc: {
                                  start: { line: 1, column: 14 },
                                  end: { line: 1, column: 44 }
                              }
                          },
                          property: {
                              type: 'Identifier',
                              name: 'call',
                              range: [46, 50],
                              loc: {
                                  start: { line: 1, column: 46 },
                                  end: { line: 1, column: 50 }
                              }
                          },
                          range: [13, 50],
                          loc: {
                              start: { line: 1, column: 13 },
                              end: { line: 1, column: 50 }
                          }
                      },
                      'arguments': [{
                          type: 'ThisExpression',
                          range: [51, 55],
                          loc: {
                              start: { line: 1, column: 51 },
                              end: { line: 1, column: 55 }
                          }
                      }],
                      range: [13, 56],
                      loc: {
                          start: { line: 1, column: 13 },
                          end: { line: 1, column: 56 }
                      }
                  },
                  range: [13, 56],
                  loc: {
                      start: { line: 1, column: 13 },
                      end: { line: 1, column: 56 }
                  },
                  leadingComments: [{
                      type: 'Block',
                      value: ' header ',
                      range: [0, 12],
                      loc: {
                          start: { line: 1, column: 0 },
                          end: { line: 1, column: 12 }
                      }
                  }]
              }],
              range: [13, 56],
              loc: {
                  start: { line: 1, column: 13 },
                  end: { line: 1, column: 56 }
              },
              comments: [{
                  type: 'Block',
                  value: ' header ',
                  range: [0, 12],
                  loc: {
                      start: { line: 1, column: 0 },
                      end: { line: 1, column: 12 }
                  }
              }]
          },
  
          '(function(){ var version = 1; /* sync */ }).call(this)': {
              type: 'Program',
              body: [{
                  type: 'ExpressionStatement',
                  expression: {
                      type: 'CallExpression',
                      callee: {
                          type: 'MemberExpression',
                          computed: false,
                          object: {
                              type: 'FunctionExpression',
                              id: null,
                              params: [],
                              defaults: [],
                              body: {
                                  type: 'BlockStatement',
                                  body: [{
                                      type: 'VariableDeclaration',
                                      declarations: [{
                                          type: 'VariableDeclarator',
                                          id: {
                                              type: 'Identifier',
                                              name: 'version',
                                              range: [17, 24],
                                              loc: {
                                                  start: { line: 1, column: 17 },
                                                  end: { line: 1, column: 24 }
                                              }
                                          },
                                          init: {
                                              type: 'Literal',
                                              value: 1,
                                              raw: '1',
                                              range: [27, 28],
                                              loc: {
                                                  start: { line: 1, column: 27 },
                                                  end: { line: 1, column: 28 }
                                              }
                                          },
                                          range: [17, 28],
                                          loc: {
                                              start: { line: 1, column: 17 },
                                              end: { line: 1, column: 28 }
                                          }
                                      }],
                                      kind: 'var',
                                      range: [13, 29],
                                      loc: {
                                          start: { line: 1, column: 13 },
                                          end: { line: 1, column: 29 }
                                      },
                                      trailingComments: [{
                                          type: 'Block',
                                          value: ' sync ',
                                          range: [30, 40],
                                          loc: {
                                              start: { line: 1, column: 30 },
                                              end: { line: 1, column: 40 }
                                          }
                                      }]
                                  }],
                                  range: [11, 42],
                                  loc: {
                                      start: { line: 1, column: 11 },
                                      end: { line: 1, column: 42 }
                                  }
                              },
                              rest: null,
                              generator: false,
                              expression: false,
                              range: [1, 42],
                              loc: {
                                  start: { line: 1, column: 1 },
                                  end: { line: 1, column: 42 }
                              }
                          },
                          property: {
                              type: 'Identifier',
                              name: 'call',
                              range: [44, 48],
                              loc: {
                                  start: { line: 1, column: 44 },
                                  end: { line: 1, column: 48 }
                              },
                              leadingComments: [{
                                  type: 'Block',
                                  value: ' sync ',
                                  range: [30, 40],
                                  loc: {
                                      start: { line: 1, column: 30 },
                                      end: { line: 1, column: 40 }
                                  }
                              }]
                          },
                          range: [0, 48],
                          loc: {
                              start: { line: 1, column: 0 },
                              end: { line: 1, column: 48 }
                          }
                      },
                      'arguments': [{
                          type: 'ThisExpression',
                          range: [49, 53],
                          loc: {
                              start: { line: 1, column: 49 },
                              end: { line: 1, column: 53 }
                          }
                      }],
                      range: [0, 54],
                      loc: {
                          start: { line: 1, column: 0 },
                          end: { line: 1, column: 54 }
                      }
                  },
                  range: [0, 54],
                  loc: {
                      start: { line: 1, column: 0 },
                      end: { line: 1, column: 54 }
                  }
              }],
              range: [0, 54],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 54 }
              },
              comments: [{
                  type: 'Block',
                  value: ' sync ',
                  range: [30, 40],
                  loc: {
                      start: { line: 1, column: 30 },
                      end: { line: 1, column: 40 }
                  }
              }]
          },
  
          'function f() { /* infinite */ while (true) { } /* bar */ var each; }': {
              type: 'Program',
              body: [{
                  type: 'FunctionDeclaration',
                  id: {
                      type: 'Identifier',
                      name: 'f',
                      range: [9, 10],
                      loc: {
                          start: { line: 1, column: 9 },
                          end: { line: 1, column: 10 }
                      }
                  },
                  params: [],
                  defaults: [],
                  body: {
                      type: 'BlockStatement',
                      body: [{
                          type: 'WhileStatement',
                          test: {
                              type: 'Literal',
                              value: true,
                              raw: 'true',
                              range: [37, 41],
                              loc: {
                                  start: { line: 1, column: 37 },
                                  end: { line: 1, column: 41 }
                              }
                          },
                          body: {
                              type: 'BlockStatement',
                              body: [],
                              range: [43, 46],
                              loc: {
                                  start: { line: 1, column: 43 },
                                  end: { line: 1, column: 46 }
                              }
                          },
                          range: [30, 46],
                          loc: {
                              start: { line: 1, column: 30 },
                              end: { line: 1, column: 46 }
                          },
                          leadingComments: [{
                              type: 'Block',
                              value: ' infinite ',
                              range: [15, 29],
                              loc: {
                                  start: { line: 1, column: 15 },
                                  end: { line: 1, column: 29 }
                              }
                          }],
                          trailingComments: [{
                              type: 'Block',
                              value: ' bar ',
                              range: [47, 56],
                              loc: {
                                  start: { line: 1, column: 47 },
                                  end: { line: 1, column: 56 }
                              }
                          }]
                      }, {
                          type: 'VariableDeclaration',
                          declarations: [{
                              type: 'VariableDeclarator',
                              id: {
                                  type: 'Identifier',
                                  name: 'each',
                                  range: [61, 65],
                                  loc: {
                                      start: { line: 1, column: 61 },
                                      end: { line: 1, column: 65 }
                                  }
                              },
                              init: null,
                              range: [61, 65],
                              loc: {
                                  start: { line: 1, column: 61 },
                                  end: { line: 1, column: 65 }
                              }
                          }],
                          kind: 'var',
                          range: [57, 66],
                          loc: {
                              start: { line: 1, column: 57 },
                              end: { line: 1, column: 66 }
                          },
                          leadingComments: [{
                              type: 'Block',
                              value: ' bar ',
                              range: [47, 56],
                              loc: {
                                  start: { line: 1, column: 47 },
                                  end: { line: 1, column: 56 }
                              }
                          }]
                      }],
                      range: [13, 68],
                      loc: {
                          start: { line: 1, column: 13 },
                          end: { line: 1, column: 68 }
                      }
                  },
                  rest: null,
                  generator: false,
                  expression: false,
                  range: [0, 68],
                  loc: {
                      start: { line: 1, column: 0 },
                      end: { line: 1, column: 68 }
                  }
              }],
              range: [0, 68],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 68 }
              },
              comments: [{
                  type: 'Block',
                  value: ' infinite ',
                  range: [15, 29],
                  loc: {
                      start: { line: 1, column: 15 },
                      end: { line: 1, column: 29 }
                  }
              }, {
                  type: 'Block',
                  value: ' bar ',
                  range: [47, 56],
                  loc: {
                      start: { line: 1, column: 47 },
                      end: { line: 1, column: 56 }
                  }
              }]
          },
  
          '<!-- foo': {
              type: 'Program',
              body: [],
              comments: [{
                  type: 'Line',
                  value: ' foo'
              }]
          },
  
          'var x = 1<!--foo': {
              type: 'Program',
              body: [{
                  type: 'VariableDeclaration',
                  declarations: [{
                      type: 'VariableDeclarator',
                      id: {
                          type: 'Identifier',
                          name: 'x'
                      },
                      init: {
                          type: 'Literal',
                          value: 1,
                          raw: '1'
                      }
                  }],
                  kind: 'var'
              }],
              comments: [{
                  type: 'Line',
                  value: 'foo'
              }]
          },
  
          '--> comment': {
              type: 'Program',
              body: [],
              range: [11, 11],
              loc: {
                  start: { line: 1, column: 11 },
                  end: { line: 1, column: 11 }
              },
              comments: [{
                  type: 'Line',
                  value: ' comment',
                  range: [0, 11],
                  loc: {
                      start: { line: 1, column: 0 },
                      end: { line: 1, column: 11 }
                  }
              }]
          },
  
          '<!-- comment': {
              type: 'Program',
              body: [],
              range: [12, 12],
              loc: {
                  start: { line: 1, column: 12 },
                  end: { line: 1, column: 12 }
              },
              comments: [{
                  type: 'Line',
                  value: ' comment',
                  range: [0, 12],
                  loc: {
                      start: { line: 1, column: 0 },
                      end: { line: 1, column: 12 }
                  }
              }]
          },
  
          ' \t --> comment': {
              type: 'Program',
              body: [],
              range: [14, 14],
              loc: {
                  start: { line: 1, column: 14 },
                  end: { line: 1, column: 14 }
              },
              comments: [{
                  type: 'Line',
                  value: ' comment',
                  range: [3, 14],
                  loc: {
                      start: { line: 1, column: 3 },
                      end: { line: 1, column: 14 }
                  }
              }]
          },
  
          ' \t /* block comment */  --> comment': {
              type: 'Program',
              body: [],
              range: [35, 35],
              loc: {
                  start: { line: 1, column: 35 },
                  end: { line: 1, column: 35 }
              },
              comments: [{
                  type: 'Block',
                  value: ' block comment ',
                  range: [3, 22],
                  loc: {
                      start: { line: 1, column: 3 },
                      end: { line: 1, column: 22 }
                  }
              }, {
                  type: 'Line',
                  value: ' comment',
                  range: [24, 35],
                  loc: {
                      start: { line: 1, column: 24 },
                      end: { line: 1, column: 35 }
                  }
              }]
          },
  
          '/* block comment */--> comment': {
              type: 'Program',
              body: [],
              range: [30, 30],
              loc: {
                  start: { line: 1, column: 30 },
                  end: { line: 1, column: 30 }
              },
              comments: [{
                  type: 'Block',
                  value: ' block comment ',
                  range: [0, 19],
                  loc: {
                      start: { line: 1, column: 0 },
                      end: { line: 1, column: 19 }
                  }
              }, {
                  type: 'Line',
                  value: ' comment',
                  range: [19, 30],
                  loc: {
                      start: { line: 1, column: 19 },
                      end: { line: 1, column: 30 }
                  }
              }]
          },
  
          '/* not comment*/; i-->0': {
              type: 'Program',
              body: [{
                  type: 'EmptyStatement',
                  range: [16, 17],
                  loc: {
                      start: { line: 1, column: 16 },
                      end: { line: 1, column: 17 }
                  }
              }, {
                  type: 'ExpressionStatement',
                  expression: {
                      type: 'BinaryExpression',
                      operator: '>',
                      left: {
                          type: 'UpdateExpression',
                          operator: '--',
                          argument: {
                              type: 'Identifier',
                              name: 'i',
                              range: [18, 19],
                              loc: {
                                  start: { line: 1, column: 18 },
                                  end: { line: 1, column: 19 }
                              }
                          },
                          prefix: false,
                          range: [18, 21],
                          loc: {
                              start: { line: 1, column: 18 },
                              end: { line: 1, column: 21 }
                          }
                      },
                      right: {
                          type: 'Literal',
                          value: 0,
                          raw: '0',
                          range: [22, 23],
                          loc: {
                              start: { line: 1, column: 22 },
                              end: { line: 1, column: 23 }
                          }
                      },
                      range: [18, 23],
                      loc: {
                          start: { line: 1, column: 18 },
                          end: { line: 1, column: 23 }
                      }
                  },
                  range: [18, 23],
                  loc: {
                      start: { line: 1, column: 18 },
                      end: { line: 1, column: 23 }
                  }
              }],
              range: [16, 23],
              loc: {
                  start: { line: 1, column: 16 },
                  end: { line: 1, column: 23 }
              },
              tokens: [{
                  type: 'Punctuator',
                  value: ';',
                  range: [16, 17],
                  loc: {
                      start: { line: 1, column: 16 },
                      end: { line: 1, column: 17 }
                  }
              }, {
                  type: 'Identifier',
                  value: 'i',
                  range: [18, 19],
                  loc: {
                      start: { line: 1, column: 18 },
                      end: { line: 1, column: 19 }
                  }
              }, {
                  type: 'Punctuator',
                  value: '--',
                  range: [19, 21],
                  loc: {
                      start: { line: 1, column: 19 },
                      end: { line: 1, column: 21 }
                  }
              }, {
                  type: 'Punctuator',
                  value: '>',
                  range: [21, 22],
                  loc: {
                      start: { line: 1, column: 21 },
                      end: { line: 1, column: 22 }
                  }
              }, {
                  type: 'Numeric',
                  value: '0',
                  range: [22, 23],
                  loc: {
                      start: { line: 1, column: 22 },
                      end: { line: 1, column: 23 }
                  }
              }]
  
          },
  
          'while (i-->0) {}': {
              type: 'WhileStatement',
              test: {
                  type: 'BinaryExpression',
                  operator: '>',
                  left: {
                      type: 'UpdateExpression',
                      operator: '--',
                      argument: {
                          type: 'Identifier',
                          name: 'i',
                          range: [7, 8],
                          loc: {
                              start: { line: 1, column: 7 },
                              end: { line: 1, column: 8 }
                          }
                      },
                      prefix: false,
                      range: [7, 10],
                      loc: {
                          start: { line: 1, column: 7 },
                          end: { line: 1, column: 10 }
                      }
                  },
                  right: {
                      type: 'Literal',
                      value: 0,
                      raw: '0',
                      range: [11, 12],
                      loc: {
                          start: { line: 1, column: 11 },
                          end: { line: 1, column: 12 }
                      }
                  },
                  range: [7, 12],
                  loc: {
                      start: { line: 1, column: 7 },
                      end: { line: 1, column: 12 }
                  }
              },
              body: {
                  type: 'BlockStatement',
                  body: [],
                  range: [14, 16],
                  loc: {
                      start: { line: 1, column: 14 },
                      end: { line: 1, column: 16 }
                  }
              },
              range: [0, 16],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 16 }
              }
          }
      },
  
      '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 }
              }
          },
  
          '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, 4],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 4 }
              }
          },
  
          '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, 7],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 7 }
              }
          },
  
          '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: 6 }
                  }
              },
              range: [0, 14],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 2, column: 6 }
              }
          },
  
          '"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: 6 }
                  }
              },
              range: [0, 15],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 2, column: 6 }
              }
          },
  
          '"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 = /42/g.test': {
              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: 'MemberExpression',
                      computed: false,
                      object: {
                          type: 'Literal',
                          value: '/42/g',
                          raw: '/42/g',
                          range: [8, 13],
                          loc: {
                              start: { line: 1, column: 8 },
                              end: { line: 1, column: 13 }
                          }
                      },
                      property: {
                          type: 'Identifier',
                          name: 'test',
                          range: [14, 18],
                          loc: {
                              start: { line: 1, column: 14 },
                              end: { line: 1, column: 18 }
                          }
                      },
                      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 }
              }
          }
  
      },
  
      '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 }
              }
          },
  
          '"use strict" + 42': {
              type: 'ExpressionStatement',
              expression: {
                  type: 'BinaryExpression',
                  operator: '+',
                  left: {
                      type: 'Literal',
                      value: 'use strict',
                      raw: '"use strict"',
                      range: [0, 12],
                      loc: {
                          start: { line: 1, column: 0 },
                          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: [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 }
              }
          }
  
      },
  
      '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 }
              }
          },
          'x = (0) ? 1 : 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: 'ConditionalExpression',
                      test: {
                          type: 'Literal',
                          value: 0,
                          raw: '0',
                          range: [ 5, 6 ],
                          loc: { start: { line: 1, column: 5 }, end: { line: 1, column: 6 } }
                      },
                      consequent: {
                          type: 'Literal',
                          value: 1,
                          raw: '1',
                          range: [ 10, 11 ],
                          loc: { start: { line: 1, column: 10 }, end: { line: 1, column: 11 } }
                      },
                      alternate: {
                          type: 'Literal',
                          value: 2,
                          raw: '2',
                          range: [ 14, 15 ],
                          loc: { start: { line: 1, column: 14 }, end: { line: 1, column: 15 } }
                      },
                      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 } }
          }
      },
  
      '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 }
              }
          }
  
      },
  
      'Complex Expression': {
  
          'a || b && c | d ^ e & f == g < h >>> i + j * k': {
              type: 'ExpressionStatement',
              expression: {
                  type: 'LogicalExpression',
                  operator: '||',
                  left: {
                      type: 'Identifier',
                      name: 'a',
                      range: [0, 1],
                      loc: {
                          start: { line: 1, column: 0 },
                          end: { line: 1, column: 1 }
                      }
                  },
                  right: {
                      type: 'LogicalExpression',
                      operator: '&&',
                      left: {
                          type: 'Identifier',
                          name: 'b',
                          range: [5, 6],
                          loc: {
                              start: { line: 1, column: 5 },
                              end: { line: 1, column: 6 }
                          }
                      },
                      right: {
                          type: 'BinaryExpression',
                          operator: '|',
                          left: {
                              type: 'Identifier',
                              name: 'c',
                              range: [10, 11],
                              loc: {
                                  start: { line: 1, column: 10 },
                                  end: { line: 1, column: 11 }
                              }
                          },
                          right: {
                              type: 'BinaryExpression',
                              operator: '^',
                              left: {
                                  type: 'Identifier',
                                  name: 'd',
                                  range: [14, 15],
                                  loc: {
                                      start: { line: 1, column: 14 },
                                      end: { line: 1, column: 15 }
                                  }
                              },
                              right: {
                                  type: 'BinaryExpression',
                                  operator: '&',
                                  left: {
                                      type: 'Identifier',
                                      name: 'e',
                                      range: [18, 19],
                                      loc: {
                                          start: { line: 1, column: 18 },
                                          end: { line: 1, column: 19 }
                                      }
                                  },
                                  right: {
                                      type: 'BinaryExpression',
                                      operator: '==',
                                      left: {
                                          type: 'Identifier',
                                          name: 'f',
                                          range: [22, 23],
                                          loc: {
                                              start: { line: 1, column: 22 },
                                              end: { line: 1, column: 23 }
                                          }
                                      },
                                      right: {
                                          type: 'BinaryExpression',
                                          operator: '<',
                                          left: {
                                              type: 'Identifier',
                                              name: 'g',
                                              range: [27, 28],
                                              loc: {
                                                  start: { line: 1, column: 27 },
                                                  end: { line: 1, column: 28 }
                                              }
                                          },
                                          right: {
                                              type: 'BinaryExpression',
                                              operator: '>>>',
                                              left: {
                                                  type: 'Identifier',
                                                  name: 'h',
                                                  range: [31, 32],
                                                  loc: {
                                                      start: { line: 1, column: 31 },
                                                      end: { line: 1, column: 32 }
                                                  }
                                              },
                                              right: {
                                                  type: 'BinaryExpression',
                                                  operator: '+',
                                                  left: {
                                                      type: 'Identifier',
                                                      name: 'i',
                                                      range: [37, 38],
                                                      loc: {
                                                          start: { line: 1, column: 37 },
                                                          end: { line: 1, column: 38 }
                                                      }
                                                  },
                                                  right: {
                                                      type: 'BinaryExpression',
                                                      operator: '*',
                                                      left: {
                                                          type: 'Identifier',
                                                          name: 'j',
                                                          range: [41, 42],
                                                          loc: {
                                                              start: { line: 1, column: 41 },
                                                              end: { line: 1, column: 42 }
                                                          }
                                                      },
                                                      right: {
                                                          type: 'Identifier',
                                                          name: 'k',
                                                          range: [45, 46],
                                                          loc: {
                                                              start: { line: 1, column: 45 },
                                                              end: { line: 1, column: 46 }
                                                          }
                                                      },
                                                      range: [41, 46],
                                                      loc: {
                                                          start: { line: 1, column: 41 },
                                                          end: { line: 1, column: 46 }
                                                      }
                                                  },
                                                  range: [37, 46],
                                                  loc: {
                                                      start: { line: 1, column: 37 },
                                                      end: { line: 1, column: 46 }
                                                  }
                                              },
                                              range: [31, 46],
                                              loc: {
                                                  start: { line: 1, column: 31 },
                                                  end: { line: 1, column: 46 }
                                              }
                                          },
                                          range: [27, 46],
                                          loc: {
                                              start: { line: 1, column: 27 },
                                              end: { line: 1, column: 46 }
                                          }
                                      },
                                      range: [22, 46],
                                      loc: {
                                          start: { line: 1, column: 22 },
                                          end: { line: 1, column: 46 }
                                      }
                                  },
                                  range: [18, 46],
                                  loc: {
                                      start: { line: 1, column: 18 },
                                      end: { line: 1, column: 46 }
                                  }
                              },
                              range: [14, 46],
                              loc: {
                                  start: { line: 1, column: 14 },
                                  end: { line: 1, column: 46 }
                              }
                          },
                          range: [10, 46],
                          loc: {
                              start: { line: 1, column: 10 },
                              end: { line: 1, column: 46 }
                          }
                      },
                      range: [5, 46],
                      loc: {
                          start: { line: 1, column: 5 },
                          end: { line: 1, column: 46 }
                      }
                  },
                  range: [0, 46],
                  loc: {
                      start: { line: 1, column: 0 },
                      end: { line: 1, column: 46 }
                  }
              },
              range: [0, 46],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 46 }
              }
          }
  
      },
  
      '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 }
              }
          },
  
          '\\u0061a': {
              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 }
              }
          },
  
          '\\u0061a ': {
              type: 'ExpressionStatement',
              expression: {
                  type: 'Identifier',
                  name: 'aa',
                  range: [0, 7],
                  loc: {
                      start: { line: 1, column: 0 },
                      end: { line: 1, column: 7 }
                  }
              },
              range: [0, 8],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 8 }
              }
          }
      },
  
      '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 }
              }
          },
  
          'if (true) that()\n; else;': {
              type: "IfStatement",
              test: {
                  type: "Literal",
                  value: true,
                  raw: "true",
                  range: [4, 8],
                  loc: {
                      start: { line: 1, column: 4 },
                      end: { line: 1, column: 8 }
                  }
              },
              consequent: {
                  type: "ExpressionStatement",
                  expression: {
                      type: "CallExpression",
                      callee: {
                          type: "Identifier",
                          name: "that",
                          range: [10, 14],
                          loc: {
                              start: { line: 1, column: 10 },
                              end: { line: 1, column: 14 }
                          }
                      },
                      "arguments": [],
                      range: [10, 16],
                      loc: {
                          start: { line: 1, column: 10 },
                          end: { line: 1, column: 16 }
                      }
                  },
                  range: [10, 18],
                  loc: {
                      start: { line: 1, column: 10 },
                      end: { line: 2, column: 1 }
                  }
              },
              alternate: {
                  type: "EmptyStatement",
                  range: [23, 24],
                  loc: {
                      start: { line: 2, column: 6 },
                      end: { line: 2, column: 7 }
                  }
              },
              range: [0, 24],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 2, column: 7 }
              }
          },
  
          'if (true) that(); else;': {
              type: "IfStatement",
              test: {
                  type: "Literal",
                  value: true,
                  raw: "true",
                  range: [4, 8],
                  loc: {
                      start: { line: 1, column: 4 },
                      end: { line: 1, column: 8 }
                  }
              },
              consequent: {
                  type: "ExpressionStatement",
                  expression: {
                      type: "CallExpression",
                      callee: {
                          type: "Identifier",
                          name: "that",
                          range: [10, 14],
                          loc: {
                              start: { line: 1, column: 10 },
                              end: { line: 1, column: 14 }
                          }
                      },
                      "arguments": [],
                      range: [10, 16],
                      loc: {
                          start: { line: 1, column: 10 },
                          end: { line: 1, column: 16 }
                      }
                  },
                  range: [10, 17],
                  loc: {
                      start: { line: 1, column: 10 },
                      end: { line: 1, column: 17 }
                  }
              },
              alternate: {
                  type: "EmptyStatement",
                  range: [22, 23],
                  loc: {
                      start: { line: 1, column: 22 },
                      end: { line: 1, column: 23 }
                  }
              },
              range: [0, 23],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 23 }
              }
          }
  
      },
  
      '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 }
              }
          },
  
          'do that();while (true)': {
              type: "DoWhileStatement",
              body: {
                  type: "ExpressionStatement",
                  expression: {
                      type: "CallExpression",
                      callee: {
                          type: "Identifier",
                          name: "that",
                          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: [17, 21],
                  loc: {
                      start: { line: 1, column: 17 },
                      end: { line: 1, column: 21 }
                  }
              },
              range: [0, 22],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 22 }
              }
          },
  
          'do that()\n;while (true)': {
              type: "DoWhileStatement",
              body: {
                  type: "ExpressionStatement",
                  expression: {
                      type: "CallExpression",
                      callee: {
                          type: "Identifier",
                          name: "that",
                          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, 11],
                  loc: {
                      start: { line: 1, column: 3 },
                      end: { line: 2, column: 1 }
                  }
              },
              test: {
                  type: "Literal",
                  value: true,
                  raw: "true",
                  range: [18, 22],
                  loc: {
                      start: { line: 2, column: 8 },
                      end: { line: 2, column: 12 }
                  }
              },
              range: [0, 23],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 2, column: 13 }
              }
          },
  
          '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 (var x = y = z in q);': {
              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: 'AssignmentExpression',
                          operator: '=',
                          left: {
                              type: 'Identifier',
                              name: 'y',
                              range: [13, 14],
                              loc: {
                                  start: { line: 1, column: 13 },
                                  end: { line: 1, column: 14 }
                              }
                          },
                          right: {
                              type: 'Identifier',
                              name: 'z',
                              range: [17, 18],
                              loc: {
                                  start: { line: 1, column: 17 },
                                  end: { line: 1, column: 18 }
                              }
                          },
                          range: [13, 18],
                          loc: {
                              start: { line: 1, column: 13 },
                              end: { line: 1, column: 18 }
                          }
                      },
                      range: [9, 18],
                      loc: {
                          start: { line: 1, column: 9 },
                          end: { line: 1, column: 18 }
                      }
                  }],
                  kind: 'var',
                  range: [5, 18],
                  loc: {
                      start: { line: 1, column: 5 },
                      end: { line: 1, column: 18 }
                  }
              },
              right: {
                  type: 'Identifier',
                  name: 'q',
                  range: [22, 23],
                  loc: {
                      start: { line: 1, column: 22 },
                      end: { line: 1, column: 23 }
                  }
              },
              body: {
                  type: 'EmptyStatement',
                  range: [24, 25],
                  loc: {
                      start: { line: 1, column: 24 },
                      end: { line: 1, column: 25 }
                  }
              },
              each: false,
              range: [0, 25],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 25 }
              }
          },
  
          'for (var a = b = c = (d in e) in z);': {
              type: 'ForInStatement',
              left: {
                  type: 'VariableDeclaration',
                  declarations: [{
                      type: 'VariableDeclarator',
                      id: {
                          type: 'Identifier',
                          name: 'a',
                          range: [9, 10],
                          loc: {
                              start: { line: 1, column: 9 },
                              end: { line: 1, column: 10 }
                          }
                      },
                      init: {
                          type: 'AssignmentExpression',
                          operator: '=',
                          left: {
                              type: 'Identifier',
                              name: 'b',
                              range: [13, 14],
                              loc: {
                                  start: { line: 1, column: 13 },
                                  end: { line: 1, column: 14 }
                              }
                          },
                          right: {
                              type: 'AssignmentExpression',
                              operator: '=',
                              left: {
                                  type: 'Identifier',
                                  name: 'c',
                                  range: [17, 18],
                                  loc: {
                                      start: { line: 1, column: 17 },
                                      end: { line: 1, column: 18 }
                                  }
                              },
                              right: {
                                  type: 'BinaryExpression',
                                  operator: 'in',
                                  left: {
                                      type: 'Identifier',
                                      name: 'd',
                                      range: [22, 23],
                                      loc: {
                                          start: { line: 1, column: 22 },
                                          end: { line: 1, column: 23 }
                                      }
                                  },
                                  right: {
                                      type: 'Identifier',
                                      name: 'e',
                                      range: [27, 28],
                                      loc: {
                                          start: { line: 1, column: 27 },
                                          end: { line: 1, column: 28 }
                                      }
                                  },
                                  range: [22, 28],
                                  loc: {
                                      start: { line: 1, column: 22 },
                                      end: { line: 1, column: 28 }
                                  }
                              },
                              range: [17, 29],
                              loc: {
                                  start: { line: 1, column: 17 },
                                  end: { line: 1, column: 29 }
                              }
                          },
                          range: [13, 29],
                          loc: {
                              start: { line: 1, column: 13 },
                              end: { line: 1, column: 29 }
                          }
                      },
                      range: [9, 29],
                      loc: {
                          start: { line: 1, column: 9 },
                          end: { line: 1, column: 29 }
                      }
                  }],
                  kind: 'var',
                  range: [5, 29],
                  loc: {
                      start: { line: 1, column: 5 },
                      end: { line: 1, column: 29 }
                  }
              },
              right: {
                  type: 'Identifier',
                  name: 'z',
                  range: [33, 34],
                  loc: {
                      start: { line: 1, column: 33 },
                      end: { line: 1, column: 34 }
                  }
              },
              body: {
                  type: 'EmptyStatement',
                  range: [35, 36],
                  loc: {
                      start: { line: 1, column: 35 },
                      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 }
              }
          },
  
          'for (a[b in c] in d);': {
              type: 'ForInStatement',
              left: {
                  type: 'MemberExpression',
                  computed: true,
                  object: {
                      type: 'Identifier',
                      name: 'a',
                      range: [5, 6],
                      loc: {
                          start: { line: 1, column: 5 },
                          end: { line: 1, column: 6 }
                      }
                  },
                  property: {
                      type: 'BinaryExpression',
                      operator: 'in',
                      left: {
                          type: 'Identifier',
                          name: 'b',
                          range: [7, 8],
                          loc: {
                              start: { line: 1, column: 7 },
                              end: { line: 1, column: 8 }
                          }
                      },
                      right: {
                          type: 'Identifier',
                          name: 'c',
                          range: [12, 13],
                          loc: {
                              start: { line: 1, column: 12 },
                              end: { line: 1, column: 13 }
                          }
                      },
                      range: [7, 13],
                      loc: {
                          start: { line: 1, column: 7 },
                          end: { line: 1, column: 13 }
                      }
                  },
                  range: [5, 14],
                  loc: {
                      start: { line: 1, column: 5 },
                      end: { line: 1, column: 14 }
                  }
              },
              right: {
                  type: 'Identifier',
                  name: 'd',
                  range: [18, 19],
                  loc: {
                      start: { line: 1, column: 18 },
                      end: { line: 1, column: 19 }
                  }
              },
              body: {
                  type: 'EmptyStatement',
                  range: [20, 21],
                  loc: {
                      start: { line: 1, column: 20 },
                      end: { line: 1, column: 21 }
                  }
              },
              each: false,
              range: [0, 21],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 21 }
              }
          },
  
          'for (a(b in c)[0] in d);': {
              type: 'ForInStatement',
              left: {
                  type: 'MemberExpression',
                  computed: true,
                  object: {
                      type: 'CallExpression',
                      callee: {
                          type: 'Identifier',
                          name: 'a',
                          range: [5, 6],
                          loc: {
                              start: { line: 1, column: 5 },
                              end: { line: 1, column: 6 }
                          }
                      },
                      arguments: [{
                          type: 'BinaryExpression',
                          operator: 'in',
                          left: {
                              type: 'Identifier',
                              name: 'b',
                              range: [7, 8],
                              loc: {
                                  start: { line: 1, column: 7 },
                                  end: { line: 1, column: 8 }
                              }
                          },
                          right: {
                              type: 'Identifier',
                              name: 'c',
                              range: [12, 13],
                              loc: {
                                  start: { line: 1, column: 12 },
                                  end: { line: 1, column: 13 }
                              }
                          },
                          range: [7, 13],
                          loc: {
                              start: { line: 1, column: 7 },
                              end: { line: 1, column: 13 }
                          }
                      }],
                      range: [5, 14],
                      loc: {
                          start: { line: 1, column: 5 },
                          end: { line: 1, column: 14 }
                      }
                  },
                  property: {
                      type: 'Literal',
                      value: 0,
                      raw: '0',
                      range: [15, 16],
                      loc: {
                          start: { line: 1, column: 15 },
                          end: { line: 1, column: 16 }
                      }
                  },
                  range: [5, 17],
                  loc: {
                      start: { line: 1, column: 5 },
                      end: { line: 1, column: 17 }
                  }
              },
              right: {
                  type: 'Identifier',
                  name: 'd',
                  range: [21, 22],
                  loc: {
                      start: { line: 1, column: 21 },
                      end: { line: 1, column: 22 }
                  }
              },
              body: {
                  type: 'EmptyStatement',
                  range: [23, 24],
                  loc: {
                      start: { line: 1, column: 23 },
                      end: { line: 1, column: 24 }
                  }
              },
              each: false,
              range: [0, 24],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 24 }
              }
          },
  
          'for (a.in in a);': {
              type: 'ForInStatement',
              left: {
                  type: 'MemberExpression',
                  computed: false,
                  object: {
                      type: 'Identifier',
                      name: 'a',
                      range: [5, 6],
                      loc: {
                          start: { line: 1, column: 5 },
                          end: { line: 1, column: 6 }
                      }
                  },
                  property: {
                      type: 'Identifier',
                      name: 'in',
                      range: [7, 9],
                      loc: {
                          start: { line: 1, column: 7 },
                          end: { line: 1, column: 9 }
                      }
                  },
                  range: [5, 9],
                  loc: {
                      start: { line: 1, column: 5 },
                      end: { line: 1, column: 9 }
                  }
              },
              right: {
                  type: 'Identifier',
                  name: 'a',
                  range: [13, 14],
                  loc: {
                      start: { line: 1, column: 13 },
                      end: { line: 1, column: 14 }
                  }
              },
              body: {
                  type: 'EmptyStatement',
                  range: [15, 16],
                  loc: {
                      start: { line: 1, column: 15 },
                      end: { line: 1, column: 16 }
                  }
              },
              each: false,
              range: [0, 16],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 16 }
              }
          }
  
      },
  
      '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 }
              }
          },
  
          '__proto__: while (true) { continue __proto__; }': {
              type: 'LabeledStatement',
              label: {
                  type: 'Identifier',
                  name: '__proto__',
                  range: [0, 9],
                  loc: {
                      start: { line: 1, column: 0 },
                      end: { line: 1, column: 9 }
                  }
              },
              body: {
                  type: 'WhileStatement',
                  test: {
                      type: 'Literal',
                      value: true,
                      raw: 'true',
                      range: [18, 22],
                      loc: {
                          start: { line: 1, column: 18 },
                          end: { line: 1, column: 22 }
                      }
                  },
                  body: {
                      type: 'BlockStatement',
                      body: [{
                          type: 'ContinueStatement',
                          label: {
                              type: 'Identifier',
                              name: '__proto__',
                              range: [35, 44],
                              loc: {
                                  start: { line: 1, column: 35 },
                                  end: { line: 1, column: 44 }
                              }
                          },
                          range: [26, 45],
                          loc: {
                              start: { line: 1, column: 26 },
                              end: { line: 1, column: 45 }
                          }
                      }],
                      range: [24, 47],
                      loc: {
                          start: { line: 1, column: 24 },
                          end: { line: 1, column: 47 }
                      }
                  },
                  range: [11, 47],
                  loc: {
                      start: { line: 1, column: 11 },
                      end: { line: 1, column: 47 }
                  }
              },
              range: [0, 47],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 47 }
              }
          }
  
      },
  
      '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 }
              }
          },
  
          '__proto__: while (true) { break __proto__; }': {
              type: 'LabeledStatement',
              label: {
                  type: 'Identifier',
                  name: '__proto__',
                  range: [0, 9],
                  loc: {
                      start: { line: 1, column: 0 },
                      end: { line: 1, column: 9 }
                  }
              },
              body: {
                  type: 'WhileStatement',
                  test: {
                      type: 'Literal',
                      value: true,
                      raw: 'true',
                      range: [18, 22],
                      loc: {
                          start: { line: 1, column: 18 },
                          end: { line: 1, column: 22 }
                      }
                  },
                  body: {
                      type: 'BlockStatement',
                      body: [{
                          type: 'BreakStatement',
                          label: {
                              type: 'Identifier',
                              name: '__proto__',
                              range: [32, 41],
                              loc: {
                                  start: { line: 1, column: 32 },
                                  end: { line: 1, column: 41 }
                              }
                          },
                          range: [26, 42],
                          loc: {
                              start: { line: 1, column: 26 },
                              end: { line: 1, column: 42 }
                          }
                      }],
                      range: [24, 44],
                      loc: {
                          start: { line: 1, column: 24 },
                          end: { line: 1, column: 44 }
                      }
                  },
                  range: [11, 44],
                  loc: {
                      start: { line: 1, column: 11 },
                      end: { line: 1, column: 44 }
                  }
              },
              range: [0, 44],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 44 }
              }
          }
  
      },
  
      '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 }
              }
          },
  
          '__proto__: test': {
              type: 'LabeledStatement',
              label: {
                  type: 'Identifier',
                  name: '__proto__',
                  range: [0, 9],
                  loc: {
                      start: { line: 1, column: 0 },
                      end: { line: 1, column: 9 }
                  }
              },
              body: {
                  type: 'ExpressionStatement',
                  expression: {
                      type: 'Identifier',
                      name: 'test',
                      range: [11, 15],
                      loc: {
                          start: { line: 1, column: 11 },
                          end: { line: 1, column: 15 }
                      }
                  },
                  range: [11, 15],
                  loc: {
                      start: { line: 1, column: 11 },
                      end: { line: 1, column: 15 }
                  }
              },
              range: [0, 15],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 15 }
              }
          }
  
      },
  
      '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 }
              }
          },
  
          'function universe(__proto__) { }': {
              type: 'FunctionDeclaration',
              id: {
                  type: 'Identifier',
                  name: 'universe',
                  range: [9, 17],
                  loc: {
                      start: { line: 1, column: 9 },
                      end: { line: 1, column: 17 }
                  }
              },
              params: [{
                  type: 'Identifier',
                  name: '__proto__',
                  range: [18, 27],
                  loc: {
                      start: { line: 1, column: 18 },
                      end: { line: 1, column: 27 }
                  }
              }],
              defaults: [],
              body: {
                  type: 'BlockStatement',
                  body: [],
                  range: [29, 32],
                  loc: {
                      start: { line: 1, column: 29 },
                      end: { line: 1, column: 32 }
                  }
              },
              rest: null,
              generator: false,
              expression: false,
              range: [0, 32],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 32 }
              }
          },
  
          'function test() { "use strict" + 42; }': {
              type: 'FunctionDeclaration',
              id: {
                  type: 'Identifier',
                  name: 'test',
                  range: [9, 13],
                  loc: {
                      start: { line: 1, column: 9 },
                      end: { line: 1, column: 13 }
                  }
              },
              params: [],
              defaults: [],
              body: {
                  type: 'BlockStatement',
                  body: [{
                      type: 'ExpressionStatement',
                      expression: {
                          type: 'BinaryExpression',
                          operator: '+',
                          left: {
                              type: 'Literal',
                              value: 'use strict',
                              raw: '"use strict"',
                              range: [18, 30],
                              loc: {
                                  start: { line: 1, column: 18 },
                                  end: { line: 1, column: 30 }
                              }
                          },
                          right: {
                              type: 'Literal',
                              value: 42,
                              raw: '42',
                              range: [33, 35],
                              loc: {
                                  start: { line: 1, column: 33 },
                                  end: { line: 1, column: 35 }
                              }
                          },
                          range: [18, 35],
                          loc: {
                              start: { line: 1, column: 18 },
                              end: { line: 1, column: 35 }
                          }
                      },
                      range: [18, 36],
                      loc: {
                          start: { line: 1, column: 18 },
                          end: { line: 1, column: 36 }
                      }
                  }],
                  range: [16, 38],
                  loc: {
                      start: { line: 1, column: 16 },
                      end: { line: 1, column: 38 }
                  }
              },
              rest: null,
              generator: false,
              expression: false,
              range: [0, 38],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 38 }
              }
          }
  
      },
  
      '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, 3],
                  loc: {
                      start: { line: 1, column: 2 },
                      end: { line: 1, column: 3 }
                  }
              }, {
                  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, 3],
                  loc: {
                      start: { line: 1, column: 2 },
                      end: { line: 1, column: 3 }
                  }
              }, {
                  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, 19],
                  loc: {
                      start: { line: 1, column: 2 },
                      end: { line: 1, column: 19 }
                  }
              }, {
                  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, 13],
                  loc: {
                      start: { line: 1, column: 2 },
                      end: { line: 1, column: 13 }
                  }
              }, {
                  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, 13],
                  loc: {
                      start: { line: 1, column: 2 },
                      end: { line: 1, column: 13 }
                  }
              }, {
                  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, 13],
                  loc: {
                      start: { line: 1, column: 2 },
                      end: { line: 1, column: 13 }
                  }
              }, {
                  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 }
              }
          }
  
      },
  
      'Directive Prolog': {
  
          '(function () { \'use\\x20strict\'; with (i); }())': {
              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\\x20strict\'',
                                  range: [15, 30],
                                  loc: {
                                      start: { line: 1, column: 15 },
                                      end: { line: 1, column: 30 }
                                  }
                              },
                              range: [15, 31],
                              loc: {
                                  start: { line: 1, column: 15 },
                                  end: { line: 1, column: 31 }
                              }
                          }, {
                              type: 'WithStatement',
                              object: {
                                  type: 'Identifier',
                                  name: 'i',
                                  range: [38, 39],
                                  loc: {
                                      start: { line: 1, column: 38 },
                                      end: { line: 1, column: 39 }
                                  }
                              },
                              body: {
                                  type: 'EmptyStatement',
                                  range: [40, 41],
                                  loc: {
                                      start: { line: 1, column: 40 },
                                      end: { line: 1, column: 41 }
                                  }
                              },
                              range: [32, 41],
                              loc: {
                                  start: { line: 1, column: 32 },
                                  end: { line: 1, column: 41 }
                              }
                          }],
                          range: [13, 43],
                          loc: {
                              start: { line: 1, column: 13 },
                              end: { line: 1, column: 43 }
                          }
                      },
                      rest: null,
                      generator: false,
                      expression: false,
                      range: [1, 43],
                      loc: {
                          start: { line: 1, column: 1 },
                          end: { line: 1, column: 43 }
                      }
                  },
                  'arguments': [],
                  range: [1, 45],
                  loc: {
                      start: { line: 1, column: 1 },
                      end: { line: 1, column: 45 }
                  }
              },
              range: [0, 46],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 46 }
              }
          },
  
          '(function () { \'use\\nstrict\'; with (i); }())': {
              type: 'ExpressionStatement',
              expression: {
                  type: 'CallExpression',
                  callee: {
                      type: 'FunctionExpression',
                      id: null,
                      params: [],
                      defaults: [],
                      body: {
                          type: 'BlockStatement',
                          body: [{
                              type: 'ExpressionStatement',
                              expression: {
                                  type: 'Literal',
                                  value: 'use\nstrict',
                                  raw: '\'use\\nstrict\'',
                                  range: [15, 28],
                                  loc: {
                                      start: { line: 1, column: 15 },
                                      end: { line: 1, column: 28 }
                                  }
                              },
                              range: [15, 29],
                              loc: {
                                  start: { line: 1, column: 15 },
                                  end: { line: 1, column: 29 }
                              }
                          }, {
                              type: 'WithStatement',
                              object: {
                                  type: 'Identifier',
                                  name: 'i',
                                  range: [36, 37],
                                  loc: {
                                      start: { line: 1, column: 36 },
                                      end: { line: 1, column: 37 }
                                  }
                              },
                              body: {
                                  type: 'EmptyStatement',
                                  range: [38, 39],
                                  loc: {
                                      start: { line: 1, column: 38 },
                                      end: { line: 1, column: 39 }
                                  }
                              },
                              range: [30, 39],
                              loc: {
                                  start: { line: 1, column: 30 },
                                  end: { line: 1, column: 39 }
                              }
                          }],
                          range: [13, 41],
                          loc: {
                              start: { line: 1, column: 13 },
                              end: { line: 1, column: 41 }
                          }
                      },
                      rest: null,
                      generator: false,
                      expression: false,
                      range: [1, 41],
                      loc: {
                          start: { line: 1, column: 1 },
                          end: { line: 1, column: 41 }
                      }
                  },
                  'arguments': [],
                  range: [1, 43],
                  loc: {
                      start: { line: 1, column: 1 },
                      end: { line: 1, column: 43 }
                  }
              },
              range: [0, 44],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 44 }
              }
          }
  
      },
  
      'Whitespace': {
  
          'new\x20\x09\x0B\x0C\xA0\u1680\u180E\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\uFEFFa': {
              type: 'ExpressionStatement',
              expression: {
                  type: 'NewExpression',
                  callee: {
                      type: 'Identifier',
                      name: 'a',
                      range: [25, 26],
                      loc: {
                          start: {line: 1, column: 25},
                          end: {line: 1, column: 26}
                      }
                  },
                  arguments: [],
                  range: [0, 26],
                  loc: {
                      start: {line: 1, column: 0},
                      end: {line: 1, column: 26}
                  }
              },
              range: [0, 26],
              loc: {
                  start: {line: 1, column: 0},
                  end: {line: 1, column: 26}
              }
          },
  
          '{0\x0A1\x0D2\u20283\u20294}': {
              type: 'BlockStatement',
              body: [
                  {
                      type: 'ExpressionStatement',
                      expression: {
                          type: 'Literal',
                          value: 0,
                          raw: '0',
                          range: [1, 2],
                          loc: {
                              start: {line: 1, column: 1},
                              end: {line: 1, column: 2}
                          }
                      },
                      range: [1, 2],
                      loc: {
                          start: {line: 1, column: 1},
                          end: {line: 1, column: 2}
                      }
                  },
                  {
                      type: 'ExpressionStatement',
                      expression: {
                          type: 'Literal',
                          value: 1,
                          raw: '1',
                          range: [3, 4],
                          loc: {
                              start: {line: 2, column: 0},
                              end: {line: 2, column: 1}
                          }
                      },
                      range: [3, 4],
                      loc: {
                          start: {line: 2, column: 0},
                          end: {line: 2, column: 1}
                      }
                  },
                  {
                      type: 'ExpressionStatement',
                      expression: {
                          type: 'Literal',
                          value: 2,
                          raw: '2',
                          range: [5, 6],
                          loc: {
                              start: {line: 3, column: 0},
                              end: {line: 3, column: 1}
                          }
                      },
                      range: [5, 6],
                      loc: {
                          start: {line: 3, column: 0},
                          end: {line: 3, column: 1}
                      }
                  },
                  {
                      type: 'ExpressionStatement',
                      expression: {
                          type: 'Literal',
                          value: 3,
                          raw: '3',
                          range: [7, 8],
                          loc: {
                              start: {line: 4, column: 0},
                              end: {line: 4, column: 1}
                          }
                      },
                      range: [7, 8],
                      loc: {
                          start: {line: 4, column: 0},
                          end: {line: 4, column: 1}
                      }
                  },
                  {
                      type: 'ExpressionStatement',
                      expression: {
                          type: 'Literal',
                          value: 4,
                          raw: '4',
                          range: [9, 10],
                          loc: {
                              start: {line: 5, column: 0},
                              end: {line: 5, column: 1}
                          }
                      },
                      range: [9, 10],
                      loc: {
                          start: {line: 5, column: 0},
                          end: {line: 5, column: 1}
                      }
                  }
              ],
              range: [0, 11],
              loc: {
                  start: {line: 1, column: 0},
                  end: {line: 5, column: 2}
              }
          }
  
      },
  
      'Source elements': {
  
          '': {
              type: 'Program',
              body: [],
              range: [0, 0],
              loc: {
                  start: { line: 0, column: 0 },
                  end: { line: 0, column: 0 }
              },
              tokens: []
          }
      },
  
      'Source option': {
          '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 },
                              source: '42.js'
                          }
                      },
                      right: {
                          type: 'Identifier',
                          name: 'y',
                          range: [4, 5],
                          loc: {
                              start: { line: 1, column: 4 },
                              end: { line: 1, column: 5 },
                              source: '42.js'
                          }
                      },
                      range: [0, 5],
                      loc: {
                          start: { line: 1, column: 0 },
                          end: { line: 1, column: 5 },
                          source: '42.js'
                      }
                  },
                  right: {
                      type: 'Identifier',
                      name: 'z',
                      range: [8, 9],
                      loc: {
                          start: { line: 1, column: 8 },
                          end: { line: 1, column: 9 },
                          source: '42.js'
                      }
                  },
                  range: [0, 9],
                  loc: {
                      start: { line: 1, column: 0 },
                      end: { line: 1, column: 9 },
                      source: '42.js'
                  }
              },
              range: [0, 9],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 9 },
                  source: '42.js'
              }
          },
  
          'a + (b < (c * d)) + e': {
              type: 'ExpressionStatement',
              expression: {
                  type: 'BinaryExpression',
                  operator: '+',
                  left: {
                      type: 'BinaryExpression',
                      operator: '+',
                      left: {
                          type: 'Identifier',
                          name: 'a',
                          range: [0, 1],
                          loc: {
                              start: { line: 1, column: 0 },
                              end: { line: 1, column: 1 },
                              source: '42.js'
                          }
                      },
                      right: {
                          type: 'BinaryExpression',
                          operator: '<',
                          left: {
                              type: 'Identifier',
                              name: 'b',
                              range: [5, 6],
                              loc: {
                                  start: { line: 1, column: 5 },
                                  end: { line: 1, column: 6 },
                                  source: '42.js'
                              }
                          },
                          right: {
                              type: 'BinaryExpression',
                              operator: '*',
                              left: {
                                  type: 'Identifier',
                                  name: 'c',
                                  range: [10, 11],
                                  loc: {
                                      start: { line: 1, column: 10 },
                                      end: { line: 1, column: 11 },
                                      source: '42.js'
                                  }
                              },
                              right: {
                                  type: 'Identifier',
                                  name: 'd',
                                  range: [14, 15],
                                  loc: {
                                      start: { line: 1, column: 14 },
                                      end: { line: 1, column: 15 },
                                      source: '42.js'
                                  }
                              },
                              range: [10, 15],
                              loc: {
                                  start: { line: 1, column: 10 },
                                  end: { line: 1, column: 15 },
                                  source: '42.js'
                              }
                          },
                          range: [5, 16],
                          loc: {
                              start: { line: 1, column: 5 },
                              end: { line: 1, column: 16 },
                              source: '42.js'
                          }
                      },
                      range: [0, 17],
                      loc: {
                          start: { line: 1, column: 0 },
                          end: { line: 1, column: 17 },
                          source: '42.js'
                      }
                  },
                  right: {
                      type: 'Identifier',
                      name: 'e',
                      range: [20, 21],
                      loc: {
                          start: { line: 1, column: 20 },
                          end: { line: 1, column: 21 },
                          source: '42.js'
                      }
                  },
                  range: [0, 21],
                  loc: {
                      start: { line: 1, column: 0 },
                      end: { line: 1, column: 21 },
                      source: '42.js'
                  }
              },
              range: [0, 21],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 21 },
                  source: '42.js'
              }
          }
  
      },
  
  
      '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'
          },
  
          'a\\u': {
              index: 3,
              lineNumber: 1,
              column: 4,
              message: 'Error: Line 1: Unexpected token ILLEGAL'
          },
  
          '\\ua': {
              index: 3,
              lineNumber: 1,
              column: 4,
              message: 'Error: Line 1: Unexpected token ILLEGAL'
          },
  
          '/': {
              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 /'
          },
  
          '/test\n/': {
              index: 6,
              lineNumber: 1,
              column: 7,
              message: 'Error: Line 1: Invalid regular expression: missing /'
          },
  
          'var x = /[a-z]/\\ux': {
              index: 17,
              lineNumber: 1,
              column: 18,
              message: 'Error: Line 1: Unexpected token ILLEGAL'
          },
  
          'var x = /[a-z\n]/\\ux': {
              index: 14,
              lineNumber: 1,
              column: 15,
              message: 'Error: Line 1: Invalid regular expression: missing /'
          },
  
          'var x = /[a-z]/\\\\ux': {
              index: 16,
              lineNumber: 1,
              column: 17,
              message: 'Error: Line 1: Unexpected token ILLEGAL'
          },
  
          'var x = /[P QR]/\\\\u0067': {
              index: 17,
              lineNumber: 1,
              column: 18,
              message: 'Error: Line 1: Unexpected token ILLEGAL'
          },
  
          '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 #= 42': {
              index: 2,
              lineNumber: 1,
              column: 3,
              message: 'Error: Line 1: Unexpected token ILLEGAL'
          },
  
          '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: 29,
              lineNumber: 1,
              column: 30,
              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'
          },
  
          'function eval(a) { "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(a) { "use strict"; }': {
              index: 9,
              lineNumber: 1,
              column: 10,
              message: 'Error: Line 1: Function name may not be eval or arguments 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'
          },
  
          '__proto__: __proto__: 42;': {
              index: 21,
              lineNumber: 1,
              column: 22,
              message: 'Error: Line 1: Label \'__proto__\' has already been declared'
          },
  
          '"use strict"; function t(__proto__, __proto__) { }': {
              index: 36,
              lineNumber: 1,
              column: 37,
              message: 'Error: Line 1: Strict mode function may not have duplicate parameter names'
          },
  
          '"use strict"; x = { __proto__: 42, __proto__: 43 }': {
              index: 48,
              lineNumber: 1,
              column: 49,
              message: 'Error: Line 1: Duplicate data property in object literal not allowed in strict mode'
          },
  
          '"use strict"; x = { get __proto__() { }, __proto__: 43 }': {
              index: 54,
              lineNumber: 1,
              column: 55,
              message: 'Error: Line 1: Object literal may not have data and accessor property with the same name'
          },
  
          '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'
          },
  
          '{ ;  ;  ': {
              index: 8,
              lineNumber: 1,
              column: 9,
              message: 'Error: Line 1: Unexpected end of input'
          },
  
          'function t() { ;  ;  ': {
              index: 21,
              lineNumber: 1,
              column: 22,
              message: 'Error: Line 1: Unexpected end of input'
          }
  
      },
  
      'Tokenize': {
          'tokenize(/42/)': [
              {
                  "type": "Identifier",
                  "value": "tokenize",
                  "range": [
                      0,
                      8
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 0
                      },
                      "end": {
                          "line": 1,
                          "column": 8
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "(",
                  "range": [
                      8,
                      9
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 8
                      },
                      "end": {
                          "line": 1,
                          "column": 9
                      }
                  }
              },
              {
                  "type": "RegularExpression",
                  "value": "/42/",
                  "range": [
                      9,
                      13
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 9
                      },
                      "end": {
                          "line": 1,
                          "column": 13
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": ")",
                  "range": [
                      13,
                      14
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 13
                      },
                      "end": {
                          "line": 1,
                          "column": 14
                      }
                  }
              }
          ],
  
          'if (false) { /42/ }': [
              {
                  "type": "Keyword",
                  "value": "if",
                  "range": [
                      0,
                      2
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 0
                      },
                      "end": {
                          "line": 1,
                          "column": 2
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "(",
                  "range": [
                      3,
                      4
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 3
                      },
                      "end": {
                          "line": 1,
                          "column": 4
                      }
                  }
              },
              {
                  "type": "Boolean",
                  "value": "false",
                  "range": [
                      4,
                      9
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 4
                      },
                      "end": {
                          "line": 1,
                          "column": 9
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": ")",
                  "range": [
                      9,
                      10
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 9
                      },
                      "end": {
                          "line": 1,
                          "column": 10
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "{",
                  "range": [
                      11,
                      12
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 11
                      },
                      "end": {
                          "line": 1,
                          "column": 12
                      }
                  }
              },
              {
                  "type": "RegularExpression",
                  "value": "/42/",
                  "range": [
                      13,
                      17
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 13
                      },
                      "end": {
                          "line": 1,
                          "column": 17
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "}",
                  "range": [
                      18,
                      19
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 18
                      },
                      "end": {
                          "line": 1,
                          "column": 19
                      }
                  }
              }
          ],
  
          'with (false) /42/': [
              {
                  "type": "Keyword",
                  "value": "with",
                  "range": [
                      0,
                      4
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 0
                      },
                      "end": {
                          "line": 1,
                          "column": 4
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "(",
                  "range": [
                      5,
                      6
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 5
                      },
                      "end": {
                          "line": 1,
                          "column": 6
                      }
                  }
              },
              {
                  "type": "Boolean",
                  "value": "false",
                  "range": [
                      6,
                      11
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 6
                      },
                      "end": {
                          "line": 1,
                          "column": 11
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": ")",
                  "range": [
                      11,
                      12
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 11
                      },
                      "end": {
                          "line": 1,
                          "column": 12
                      }
                  }
              },
              {
                  "type": "RegularExpression",
                  "value": "/42/",
                  "range": [
                      13,
                      17
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 13
                      },
                      "end": {
                          "line": 1,
                          "column": 17
                      }
                  }
              }
          ],
  
          '(false) /42/': [
              {
                  "type": "Punctuator",
                  "value": "(",
                  "range": [
                      0,
                      1
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 0
                      },
                      "end": {
                          "line": 1,
                          "column": 1
                      }
                  }
              },
              {
                  "type": "Boolean",
                  "value": "false",
                  "range": [
                      1,
                      6
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 1
                      },
                      "end": {
                          "line": 1,
                          "column": 6
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": ")",
                  "range": [
                      6,
                      7
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 6
                      },
                      "end": {
                          "line": 1,
                          "column": 7
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "/",
                  "range": [
                      8,
                      9
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 8
                      },
                      "end": {
                          "line": 1,
                          "column": 9
                      }
                  }
              },
              {
                  "type": "Numeric",
                  "value": "42",
                  "range": [
                      9,
                      11
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 9
                      },
                      "end": {
                          "line": 1,
                          "column": 11
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "/",
                  "range": [
                      11,
                      12
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 11
                      },
                      "end": {
                          "line": 1,
                          "column": 12
                      }
                  }
              }
          ],
  
          'function f(){} /42/': [
              {
                  "type": "Keyword",
                  "value": "function",
                  "range": [
                      0,
                      8
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 0
                      },
                      "end": {
                          "line": 1,
                          "column": 8
                      }
                  }
              },
              {
                  "type": "Identifier",
                  "value": "f",
                  "range": [
                      9,
                      10
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 9
                      },
                      "end": {
                          "line": 1,
                          "column": 10
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "(",
                  "range": [
                      10,
                      11
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 10
                      },
                      "end": {
                          "line": 1,
                          "column": 11
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": ")",
                  "range": [
                      11,
                      12
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 11
                      },
                      "end": {
                          "line": 1,
                          "column": 12
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "{",
                  "range": [
                      12,
                      13
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 12
                      },
                      "end": {
                          "line": 1,
                          "column": 13
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "}",
                  "range": [
                      13,
                      14
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 13
                      },
                      "end": {
                          "line": 1,
                          "column": 14
                      }
                  }
              },
              {
                  "type": "RegularExpression",
                  "value": "/42/",
                  "range": [
                      15,
                      19
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 15
                      },
                      "end": {
                          "line": 1,
                          "column": 19
                      }
                  }
              }
          ],
  
          'function(){} /42': [
              {
                  "type": "Keyword",
                  "value": "function",
                  "range": [
                      0,
                      8
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 0
                      },
                      "end": {
                          "line": 1,
                          "column": 8
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "(",
                  "range": [
                      8,
                      9
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 8
                      },
                      "end": {
                          "line": 1,
                          "column": 9
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": ")",
                  "range": [
                      9,
                      10
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 9
                      },
                      "end": {
                          "line": 1,
                          "column": 10
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "{",
                  "range": [
                      10,
                      11
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 10
                      },
                      "end": {
                          "line": 1,
                          "column": 11
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "}",
                  "range": [
                      11,
                      12
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 11
                      },
                      "end": {
                          "line": 1,
                          "column": 12
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "/",
                  "range": [
                      13,
                      14
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 13
                      },
                      "end": {
                          "line": 1,
                          "column": 14
                      }
                  }
              },
              {
                  "type": "Numeric",
                  "value": "42",
                  "range": [
                      14,
                      16
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 14
                      },
                      "end": {
                          "line": 1,
                          "column": 16
                      }
                  }
              }
          ],
  
          '{} /42': [
              {
                  "type": "Punctuator",
                  "value": "{",
                  "range": [
                      0,
                      1
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 0
                      },
                      "end": {
                          "line": 1,
                          "column": 1
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "}",
                  "range": [
                      1,
                      2
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 1
                      },
                      "end": {
                          "line": 1,
                          "column": 2
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "/",
                  "range": [
                      3,
                      4
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 3
                      },
                      "end": {
                          "line": 1,
                          "column": 4
                      }
                  }
              },
              {
                  "type": "Numeric",
                  "value": "42",
                  "range": [
                      4,
                      6
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 4
                      },
                      "end": {
                          "line": 1,
                          "column": 6
                      }
                  }
              }
          ],
  
          '[function(){} /42]': [
              {
                  "type": "Punctuator",
                  "value": "[",
                  "range": [
                      0,
                      1
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 0
                      },
                      "end": {
                          "line": 1,
                          "column": 1
                      }
                  }
              },
              {
                  "type": "Keyword",
                  "value": "function",
                  "range": [
                      1,
                      9
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 1
                      },
                      "end": {
                          "line": 1,
                          "column": 9
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "(",
                  "range": [
                      9,
                      10
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 9
                      },
                      "end": {
                          "line": 1,
                          "column": 10
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": ")",
                  "range": [
                      10,
                      11
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 10
                      },
                      "end": {
                          "line": 1,
                          "column": 11
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "{",
                  "range": [
                      11,
                      12
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 11
                      },
                      "end": {
                          "line": 1,
                          "column": 12
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "}",
                  "range": [
                      12,
                      13
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 12
                      },
                      "end": {
                          "line": 1,
                          "column": 13
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "/",
                  "range": [
                      14,
                      15
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 14
                      },
                      "end": {
                          "line": 1,
                          "column": 15
                      }
                  }
              },
              {
                  "type": "Numeric",
                  "value": "42",
                  "range": [
                      15,
                      17
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 15
                      },
                      "end": {
                          "line": 1,
                          "column": 17
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "]",
                  "range": [
                      17,
                      18
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 17
                      },
                      "end": {
                          "line": 1,
                          "column": 18
                      }
                  }
              }
          ],
  
          ';function f(){} /42/': [
              {
                  "type": "Punctuator",
                  "value": ";",
                  "range": [
                      0,
                      1
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 0
                      },
                      "end": {
                          "line": 1,
                          "column": 1
                      }
                  }
              },
              {
                  "type": "Keyword",
                  "value": "function",
                  "range": [
                      1,
                      9
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 1
                      },
                      "end": {
                          "line": 1,
                          "column": 9
                      }
                  }
              },
              {
                  "type": "Identifier",
                  "value": "f",
                  "range": [
                      10,
                      11
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 10
                      },
                      "end": {
                          "line": 1,
                          "column": 11
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "(",
                  "range": [
                      11,
                      12
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 11
                      },
                      "end": {
                          "line": 1,
                          "column": 12
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": ")",
                  "range": [
                      12,
                      13
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 12
                      },
                      "end": {
                          "line": 1,
                          "column": 13
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "{",
                  "range": [
                      13,
                      14
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 13
                      },
                      "end": {
                          "line": 1,
                          "column": 14
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "}",
                  "range": [
                      14,
                      15
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 14
                      },
                      "end": {
                          "line": 1,
                          "column": 15
                      }
                  }
              },
              {
                  "type": "RegularExpression",
                  "value": "/42/",
                  "range": [
                      16,
                      20
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 16
                      },
                      "end": {
                          "line": 1,
                          "column": 20
                      }
                  }
              }
          ],
  
          'void /42/': [
              {
                  "type": "Keyword",
                  "value": "void",
                  "range": [
                      0,
                      4
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 0
                      },
                      "end": {
                          "line": 1,
                          "column": 4
                      }
                  }
              },
              {
                  "type": "RegularExpression",
                  "value": "/42/",
                  "range": [
                      5,
                      9
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 5
                      },
                      "end": {
                          "line": 1,
                          "column": 9
                      }
                  }
              }
          ],
  
          '/42/': [
              {
                  "type": "RegularExpression",
                  "value": "/42/",
                  "range": [
                      0,
                      4
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 0
                      },
                      "end": {
                          "line": 1,
                          "column": 4
                      }
                  }
              }
          ],
  
          'foo[/42]': [
              {
                  "type": "Identifier",
                  "value": "foo",
                  "range": [
                      0,
                      3
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 0
                      },
                      "end": {
                          "line": 1,
                          "column": 3
                      }
                  }
              },
              {
                  "type": "Punctuator",
                  "value": "[",
                  "range": [
                      3,
                      4
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 3
                      },
                      "end": {
                          "line": 1,
                          "column": 4
                      }
                  }
              }
          ],
  
          '[a] / b': [
              {
                  "type": "Punctuator",
                  "value": "[",
                  "range": [
                      0,
                      1
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 0
                      },
                      "end": {
                          "line": 1,
                          "column": 1
                      }
                  }
              },
              {
                  "type": "Identifier",
                  "value": "a",
                  "range": [
                      1,
                      2
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 1
                      },
                      "end": {
                          "line": 1,
                          "column": 2
                      }
                  }
              },
              {
                  "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": "Identifier",
                  "value": "b",
                  "range": [
                      6,
                      7
                  ],
                  "loc": {
                      "start": {
                          "line": 1,
                          "column": 6
                      },
                      "end": {
                          "line": 1,
                          "column": 7
                      }
                  }
              }
          ],
  
          '': [],
  
          '/42': {
              tokenize: true,
              index: 3,
              lineNumber: 1,
              column: 4,
              message: 'Error: Line 1: Invalid regular expression: missing /'
          },
  
          'foo[/42': {
              tokenize: true,
              index: 7,
              lineNumber: 1,
              column: 8,
              message: 'Error: Line 1: Invalid regular expression: missing /'
          },
  
          'this / 100;': [
            {
              "type": "Keyword",
              "value": "this",
              "range": [
                0,
                4
              ],
              "loc": {
                "start": {
                  "line": 1,
                  "column": 0
                },
                "end": {
                  "line": 1,
                  "column": 4
                }
              }
            },
            {
              "type": "Punctuator",
              "value": "/",
              "range": [
                5,
                6
              ],
              "loc": {
                "start": {
                  "line": 1,
                  "column": 5
                },
                "end": {
                  "line": 1,
                  "column": 6
                }
              }
            },
            {
              "type": "Numeric",
              "value": "100",
              "range": [
                7,
                10
              ],
              "loc": {
                "start": {
                  "line": 1,
                  "column": 7
                },
                "end": {
                  "line": 1,
                  "column": 10
                }
              }
            },
            {
              "type": "Punctuator",
              "value": ";",
              "range": [
                10,
                11
              ],
              "loc": {
                "start": {
                  "line": 1,
                  "column": 10
                },
                "end": {
                  "line": 1,
                  "column": 11
                }
              }
            }
          ]
      },
  
      '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,
                          raw: 'null'
                      }
                  }]
              }
          },
  
          'parse(42)': {
              call: 'parse',
              args: [42],
              result: {
                  type: 'Program',
                  body: [{
                      type: 'ExpressionStatement',
                      expression: {
                          type: 'Literal',
                          value: 42,
                          raw: '42'
                      }
                  }]
              }
          },
  
          'parse(true)': {
              call: 'parse',
              args: [true],
              result: {
                  type: 'Program',
                  body: [{
                      type: 'ExpressionStatement',
                      expression: {
                          type: 'Literal',
                          value: true,
                          raw: '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,
                          raw: '42'
                      }
                  }]
              }
          },
  
          'parse(new Boolean(true))': {
              call: 'parse',
              args: [new Boolean(true)],
              result: {
                  type: 'Program',
                  body: [{
                      type: 'ExpressionStatement',
                      expression: {
                          type: 'Literal',
                          value: true,
                          raw: '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'
              }
          },
  
          'tokenize()': {
            call: 'tokenize',
            args: [],
            result: [{
              type: 'Identifier',
              value: 'undefined'
            }]
          },
  
          'tokenize(null)': {
            call: 'tokenize',
            args: [null],
            result: [{
              type: 'Null',
              value: 'null'
            }]
          },
  
          'tokenize(42)': {
            call: 'tokenize',
            args: [42],
            result: [{
              type: 'Numeric',
              value: '42'
            }]
          },
  
          'tokenize(true)': {
            call: 'tokenize',
            args: [true],
            result: [{
              type: 'Boolean',
              value: 'true'
            }]
          },
  
          'tokenize(undefined)': {
            call: 'tokenize',
            args: [void 0],
            result: [{
              type: 'Identifier',
              value: 'undefined'
            }]
          },
  
          'tokenize(new String("test"))': {
            call: 'tokenize',
            args: [new String('test')],
            result: [{
              type: 'Identifier',
              value: 'test'
            }]
          },
  
          'tokenize(new Number(42))': {
            call: 'tokenize',
            args: [new Number(42)],
            result: [{
              type: 'Numeric',
              value: '42'
            }]
          },
  
          'tokenize(new Boolean(true))': {
            call: 'tokenize',
            args: [new Boolean(true)],
            result: [{
              type: 'Boolean',
              value: 'true'
            }]
          }
      },
  
      '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'
              }]
          },
  
          '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 }
              },
              errors: [{
                  index: 17,
                  lineNumber: 1,
                  column: 18,
                  message: "Error: Line 1: Unexpected token ILLEGAL"
              }]
          },
  
          '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, 23],
                          loc: {
                              start: { line: 1, column: 8 },
                              end: { line: 1, column: 23 }
                          }
                      },
                      range: [4, 23],
                      loc: {
                          start: { line: 1, column: 4 },
                          end: { line: 1, column: 23 }
                      }
                  }],
                  kind: "var",
                  range: [0, 23],
                  loc: {
                      start: { line: 1, column: 0 },
                      end: { line: 1, column: 23 }
                  }
              }],
              range: [0, 23],
              loc: {
                  start: { line: 1, column: 0 },
                  end: { line: 1, column: 23 }
              },
              errors: [{
                  index: 17,
                  lineNumber: 1,
                  column: 18,
                  message: "Error: Line 1: Unexpected token ILLEGAL"
              }, {
                  index: 23,
                  lineNumber: 1,
                  column: 24,
                  message: "Error: Line 1: Unexpected token ILLEGAL"
              }]
          }
  
      }
  };
  