code: @Override
      public V remove(Object key) {
          if (fast) {
              synchronized (this) {
                  Map<K, V> temp = cloneMap(map);
                  V result = temp.remove(key);
                  map = temp;
                  return (result);
              }
          } else {
              synchronized (map) {
                  return (map.remove(key));
              }
          }
      }
docs: Remove any mapping for this key, and return any previously
  mapped value.
  
  @param key the key whose mapping is to be removed
  @return the value removed, or null