public boolean put(BytesKey key, OpItem value) throws IOException {
        if (this.loadFactor() > 0.75f) {
            return false;
        }
        int keyHash = this.hashForKey(key);
        int j = hash1(keyHash);
        int offset = calcOffset(j);
        int i = 0;
        int m = table.length;
        while (this.table[j] != null && !isEntryDeleted(j) && this.bitSet.get(offset) && i < m) {
            j = hash(keyHash, i++);
            offset = calcOffset(j);
        }
        if (table[j] == null || table[j].isDeleted()) {
            table[j] = new OpItemEntry(value, false);
            byte[] buffer = table[j].encode();
            if (buffer != null) {
                this.mappedByteBuffer.position(offset);
                this.mappedByteBuffer.put(buffer, 0, buffer.length);
                bitSet.set(offset, true);
            }
            table[j].unload();
            return true;
        } else {
            return false;
        }

    }