protected final int shiftKeys(int pos) {
		// Shift entries with the same hash.
		int last, slot;
		for (;;) {
			pos = ((last = pos) + 1) & mask;
			while (used[pos]) {
				slot = (it.unimi.dsi.fastutil.HashCommon
						.murmurHash3((key[pos]))) & mask;
				if (last <= pos ? last >= slot || slot > pos : last >= slot
						&& slot > pos)
					break;
				pos = (pos + 1) & mask;
			}
			if (!used[pos])
				break;
			key[last] = key[pos];
			copyValue(last, pos);
		}
		used[last] = false;
		return last;
	}