private int nextFree() {
   int ret = (int) freeList.setOne(nextSet);
   if (ret == DirectBitSet.NOT_FOUND) {
     ret = (int) freeList.setOne(0);
     if (ret == DirectBitSet.NOT_FOUND)
       throw new IllegalStateException("Segment is full, no free entries found");
   }
   nextSet = ret + 1;
   return ret;
 }