if (key instanceof LongValue && key.toLong() + 1 == _nextAvailableIndex) { updateNextAvailableIndex(); }
  public Value remove(Value key)  {    if (_isDirty)      copyOnWrite();        int capacity = _entries.length;    key = key.toKey();    int hash = key.hashCode() & _hashMask;    int count = capacity;    for (; count >= 0; count--) {      Entry entry = _entries[hash];      if (entry == null)	return UnsetValue.UNSET;      else if (key.equals(entry._key)) {	if (entry._prev != null)	  entry._prev._next = entry._next;	else	  _head = entry._next;		if (entry._next != null)	  entry._next._prev = entry._prev;	else	  _tail = entry._prev;	entry._prev = null;	entry._next = null;	_current = _head;	_size--;	Value value = entry.getValue();	_entries[hash] = null;	shiftEntries(hash + 1);	return value;      }      hash = (hash + 1) & _hashMask;    }        return UnsetValue.UNSET;  }