code: private int loadTable(long uuid)
              throws IOException {
          int bufferIndex = -1;
          Set<Long> uuids = null;
  
          // Always attempt to append to the last block first.
          int blockIndex = _blocks.size() - 1;
          TableBlock lastBlock = _blocks.get(blockIndex);
  
          // Even though this is a while loop it will run at most twice: once if there is room in the current final
          // block, and a second time if there wasn't and a new block needed to be allocated.
          while (bufferIndex == -1) {
              Pair<Integer, Set<Long>> bufferIndexAndUuuids = lastBlock.writeTable(uuid);
              bufferIndex = bufferIndexAndUuuids.left;
              if (bufferIndex == -1) {
                  blockIndex++;
                  lastBlock = new TableBlock(blockIndex * _blockSize);
                  _blocks.add(lastBlock);
              } else {
                  uuids = bufferIndexAndUuuids.right;
              }
          }
  
          int index = toIndex(blockIndex, bufferIndex);
  
          // Map each UUID associated with the table to the table's index
          for (Long tableUuid : uuids) {
              _fileIndexByUuid.put(tableUuid, index);
          }
  
          return index;
      }
docs: Loads a table from the source and places it into the next available space in the table blocks.
  Once the table is written it returns the index where the table is located for future reads.