public int remove(final int key)
    {
        final int initialValue = this.initialValue;
        final int[] entries = this.entries;
        @DoNotSub final int mask = entries.length - 1;
        @DoNotSub int keyIndex = Hashing.evenHash(key, mask);

        int oldValue;
        while (initialValue != (oldValue = entries[keyIndex + 1]))
        {
            if (key == entries[keyIndex])
            {
                entries[keyIndex + 1] = initialValue;
                size--;

                compactChain(keyIndex);

                break;
            }

            keyIndex = next(keyIndex, mask);
        }

        return oldValue;
    }
@Test
    void removeShouldReturnMissing()
    {
        assertEquals(INITIAL_VALUE, map.remove(1));
    }