text: public int remove(object key){bool hashedOk;int index;int next;int hash;int result;object @object;index = next = findIndex(key, keys);if (keys[index] != key){return -1;}result = values[index];int length = keys.Length;while (true){next = (next + 2) % length;@object = keys[next];if (@object == null){break;}hash = getModuloHash(@object, length);hashedOk = hash > index;if (next < index){hashedOk = hashedOk || (hash <= next);}else{hashedOk = hashedOk && (hash <= next);}if (!hashedOk){keys[index] = @object;values[index] = values[next];index = next;}}size--;keys[index] = null;values[index] = -1;return result;}