private int split(final SplitPolicy policy, final Buffer buffer, final int foundAt, final Sequence sequence) {
        int best = -1;
        int bestMeasure = -1;
        int leftSize = 0;
        int rightSize = buffer.getBufferSize() + 10;
        int perKeySize = rightSize / buffer.getKeyCount();
        for (int p = buffer.getKeyBlockStart(); p < buffer.getKeyBlockEnd(); p += Buffer.KEYBLOCK_LENGTH) {

            int measure = policy.splitFit(buffer, p, foundAt, false, leftSize, rightSize, buffer.getBufferSize() - 100,
                    leftSize + rightSize, buffer.getBufferSize(), best, sequence);
            if (measure > bestMeasure) {
                best = p;
                bestMeasure = measure;
            }
            leftSize += perKeySize;
            rightSize -= perKeySize;
        }
        return best;
    }