docs: public void addTables(Collection<VoltTable> tables) {
          if (m_readOnly) {
              throw new IllegalStateException("Table is read-only. Make a copy before changing.");
          }
  
          try {
              // Allow the buffer to grow to max capacity
              m_buffer.limit(m_buffer.capacity());
  
              Collection<ByteBuffer> rawTables = new ArrayList<>(tables.size());
              int totalRawSize = 0;
              int newRowCounts = 0;
              for (VoltTable table : tables) {
                  if (table == null) {
                      continue;
                  }
                  checkHasExactSchema(table);
                  ByteBuffer rawTable = table.getAllRowsRaw();
                  rawTables.add(rawTable);
                  totalRawSize += rawTable.remaining();
                  newRowCounts += table.getRowCount();
              }
  
              if (m_buffer.remaining() < totalRawSize) {
                  expandBufferTo(m_buffer.position() + totalRawSize);
              }
  
              for (ByteBuffer rawTable : rawTables) {
                  m_buffer.put(rawTable);
              }
  
              // increment the rowcount in the member var and in the buffer
              m_rowCount += newRowCounts;
              m_buffer.putInt(m_rowStart, m_rowCount);
          } finally {
              // constrain buffer limit back to the new position
              m_buffer.limit(m_buffer.position());
          }
      }