short columnNumber = buffer.getShort(); Byte flags = new Byte(buffer.get());
short columnNumber = tableBuffer.getShort(); Byte flags = new Byte(tableBuffer.get());
  public void read(ByteBuffer buffer, List<Column> availableColumns)  throws IOException  {    for (int i = 0; i < MAX_COLUMNS; i++) {      short columnNumber = buffer.getShort();      Byte flags = new Byte(buffer.get());      if (columnNumber != COLUMN_UNUSED) {        _columns.put(availableColumns.get(columnNumber), flags);      }    }    buffer.getInt(); //Forward past Unknown    _pageNumber = buffer.getInt();    buffer.position(buffer.position() + 10);  //Forward past other stuff    ByteBuffer indexPage = _pageChannel.createPageBuffer();    _pageChannel.readPage(indexPage, _pageNumber);    indexPage.position(_format.OFFSET_INDEX_ENTRY_MASK);    byte[] entryMask = new byte[_format.SIZE_INDEX_ENTRY_MASK];    indexPage.get(entryMask);    int lastStart = 0;    int nextEntryIndex = 0;    for (int i = 0; i < entryMask.length; i++) {      for (int j = 0; j < 8; j++) {        if ((entryMask[i] & (1 << j)) != 0) {          int length = i * 8 + j - lastStart;          Entry e = new Entry(indexPage, nextEntryIndex++);          _entries.add(e);          lastStart += length;        }      }    }  }