private void growBuffer(int loHash) {
    final IntBuffer buffer1 = keysBuffers[loHash];
    final IntBuffer buffer2 = ByteBuffer.allocate(buffer1.capacity() * 8).order(ByteOrder.nativeOrder()).asIntBuffer();
    keysBuffers[loHash] = buffer2;
    KE ke = acquireKeyElement(0);
    int used = 0;
    OUTER:
    for (int j = 0; j < buffer1.capacity(); j++) {
      int index = buffer1.get(j);
      if (index == 0) continue;
      ke.index(index - 1);

      int hiHash = (int) (ke.longHashCode() & HASH_MASK / keysBuffers.length);
      for (int i = 0, len = buffer2.limit(); i < len; i++) {
        final int i1 = buffer2.get((hiHash + i) % len);
        if (i1 == 0) {
          buffer2.put((hiHash + i) % len, index);
          used++;
          continue OUTER;
        }
      }
    }
    recycle(ke);
    buffer2.position(used);
  }