public int remove(long k)
    {
        if (k == 0L) {
            return containsNullKey ? removeNullEntry() : defRetValue;
        }
        else {
            long[] key = this.key;

            int pos = (int) mix(k) & mask;
            long curr = key[pos];
            if (curr == 0L) {
                return defRetValue;
            }
            else if (k == curr) {
                return removeEntry(pos);
            }
            else {
                while (curr != 0L) {
                    if (k == curr) {
                        return removeEntry(pos);
                    }
                    pos = pos + 1 & mask;
                    curr = key[pos];
                }

                return defRetValue;
            }
        }
    }
@Test
    public void testRemove()
    {
        // Test remove() and get() without rehashing
        testRemove(10);

        // Test remove() and get() with rehashing
        testRemove(1000);
    }