row(row, lastRow = false) {
    if (this._ended) {
      throw new Error(`Table was marked as ended on row ${this._currRowIndex}`);
    }

    // Convert the iterable into an array
    row = Array.from(row);
    // Transform row
    row = normalizeRow.call(this, row, this._currRowIndex);
    if (this._currRowIndex === 0) ensure.call(this, row);
    const { newPage, toRender } = measure.call(this, row, this._currRowIndex);
    if (newPage) this.document.continueOnNewPage();
    const yPos = renderRow.call(this, toRender, this._currRowIndex);

    // Position document at base of new row
    this.document.x = this._position.x;
    this.document.y = yPos;

    if (lastRow) return this.end();

    this._currRowIndex++;
    return this;
  }
Render a new row in the table

@param {Iterable<TableCell>} row - The cells to render
@param {boolean} lastRow - Whether this row is the last row
@returns {this} returns the table, unless lastRow is `true` then returns the `PDFDocument`