private long put(K key, long value, boolean ifNew)
  {
    if (key == null) {
      long old = _nullValue;
      _nullValue = value;
      return old;
    }

    int hash = key.hashCode() & _mask;

    while (true) {
      K testKey = _keys[hash];

      if (testKey == null || (_flags[hash] & DELETED) != 0) {
        _keys[hash] = key;
        _values[hash] = value;
        _flags[hash] = 0;

        _size++;

        if (_keys.length <= 2 * _size)
          resize(2 * _keys.length);

        return NULL;
      }
      else if (key != testKey && ! testKey.equals(key)) {
        hash = (hash + 1) & _mask;
        continue;
      }
      else if (ifNew) {
        return _values[hash];
      }
      else {
        long old = _values[hash];

        _values[hash] = value;

        return old;
      }
    }
  }
private long put ( K key , long value , boolean ifNew ) { if ( key == null ) { long old = _nullValue ; _nullValue = value ; return old ; } int hash = key . hashCode ( ) & _mask ; while ( true ) { K testKey = _keys [ hash ] ; if ( testKey == null || ( _flags [ hash ] & DELETED ) != 0 ) { _keys [ hash ] = key ; _values [ hash ] = value ; _flags [ hash ] = 0 ; _size ++ ; if ( _keys . length <= 2 * _size ) resize ( 2 * _keys . length ) ; return NULL ; } else if ( key != testKey && ! testKey . equals ( key ) ) { hash = ( hash + 1 ) & _mask ; continue ; } else if ( ifNew ) { return _values [ hash ] ; } else { long old = _values [ hash ] ; _values [ hash ] = value ; return old ; } } }
Puts a new value in the property table with the appropriate flags