code: public final V remove(K key) {
          if (key == null) {
              throw new NullPointerException("key == null");
          }
  
          V previous;
          synchronized (this) {
              previous = map.remove(key);
              if (previous != null) {
                  size -= safeSizeOf(key, previous);
              }
          }
  
          if (previous != null) {
              entryRemoved(false, key, previous, null);
          }
  
          return previous;
      }
docs: Removes the entry for {@code key} if it exists.
  
  @return the previous value mapped by {@code key}.