LOG.warn("Skipping row with overflow flag");
  private boolean positionAtNextRow() throws IOException {    if (_rowsLeftOnPage == 0) {      do {        if (!_ownedPages.getNextPage(_buffer)) {          //No more owned pages.  No more rows.          return false;        }      } while (_buffer.get() != PageTypes.DATA);  //Only interested in data pages      _rowsLeftOnPage = _buffer.getShort(_format.OFFSET_NUM_ROWS_ON_DATA_PAGE);      _currentRowInPage = 0;      _lastRowStart = (short) _format.PAGE_SIZE;    }    _rowStart = _buffer.getShort(_format.OFFSET_DATA_ROW_LOCATION_BLOCK +        _currentRowInPage * _format.SIZE_ROW_LOCATION);    _currentRowInPage++;    _rowsLeftOnPage--;    // FIXME, mdbtools seems to be confused as to which flag is which, this    // code follows the actual code, which disagrees with the HACKING doc    boolean deletedRow = ((_rowStart & 0x4000) != 0);    boolean overflowRow = ((_rowStart & 0x8000) != 0);    _rowStart = (short)(_rowStart & OFFSET_MASK);        if (deletedRow) {      // Deleted row.  Skip.      _lastRowStart = _rowStart;      return positionAtNextRow();    } else if (overflowRow) {      // Overflow page.      // FIXME - Currently skipping this.  Need to figure out how to read it.//       _buffer.position(_rowStart);//       int overflow = _buffer.getInt();      _lastRowStart = _rowStart;      return positionAtNextRow();    } else {      _buffer.position(_rowStart);      _buffer.limit(_lastRowStart);      _lastRowStart = _rowStart;      return true;    }  }