public long remove(K key){
  if (key == null) {
    long old=_nullValue;
    _nullValue=NULL;
    return old;
  }
  int hash=key.hashCode() & _mask;
  while (true) {
    Object mapKey=_keys[hash];
    if (mapKey == null)     return NULL;
 else     if (mapKey.equals(key)) {
      _flags[hash]|=DELETED;
      _size--;
      _keys[hash]=null;
      return _values[hash];
    }
    hash=(hash + 1) & _mask;
  }
}

public long remove ( K key ) { if ( key == null ) { long old = _nullValue ; _nullValue = NULL ; return old ; } int hash = key . hashCode ( ) & _mask ; while ( true ) { Object mapKey = _keys [ hash ] ; if ( mapKey == null ) return NULL ; else if ( mapKey . equals ( key ) ) { _flags [ hash ] |= DELETED ; _size -- ; _keys [ hash ] = null ; return _values [ hash ] ; } hash = ( hash + 1 ) & _mask ; } }
deletes the entry . returns true if successful .
