parseVariableDeclarationList_(allowIn, initializerRequired) {
    let type = peekType();

    switch (type) {
      case CONST:
      case LET:
      case VAR:
        nextToken();
        break;
      default:
        throw Error('unreachable');
    }

    let start = this.getTreeStartLocation_();
    let declarations = [];

    declarations.push(this.parseVariableDeclaration_(type, allowIn,
                                                     initializerRequired));
    while (this.eatIf_(COMMA)) {
      declarations.push(this.parseVariableDeclaration_(type, allowIn,
                                                       initializerRequired));
    }
    return new VariableDeclarationList(
        this.getTreeLocation_(start), type, declarations);
  }
@param {boolean} allowIn
@param {boolean} initializerRequired Whether destructuring requires an
    initializer
@return {VariableDeclarationList}
@private