code: @Override
      public final V remove(Object key) {
          long hash, allocIndex;
          Segment<K, V> segment;
          V oldValue;
          if ((allocIndex = (segment = segment(segmentIndex(hash = keyHashCode(key))))
                  .remove(this, hash, key, null, false)) > 0) {
              oldValue = segment.readValue(allocIndex);
              segment.eraseAlloc(allocIndex);
              return oldValue;
          }
          return null;
      }
docs: Removes the mapping for a key from this map if it is present. More formally, if this map
  contains a mapping from key {@code k} to value {@code v} such that {@link #keysEqual(Object,
  Object) keysEqual(key, k)}{@code == true}, that mapping is removed. (The map can contain at
  most one such mapping.)
  
  <p>Returns the value to which this map previously associated the key, or {@code null} if the
  map contained no mapping for the key.
  
  <p>A return value of {@code null} does not <i>necessarily</i> indicate that the map contained
  no mapping for the key; it's also possible that the map explicitly mapped the key to
  {@code null}.
  
  <p>The map will not contain a mapping for the specified key once the
  call returns.
  
  @param key key whose mapping is to be removed from the map
  @return the previous value associated with {@code key}, or
  {@code null} if there was no mapping for {@code key}.