code: @Override
    @SuppressWarnings("unchecked")
    public V put(K key, V value) {
      if (value == null) {
        return put(key, (V)nullValue);
      }
      // key could be not in original or in deltaMap
      // key could be not in original but in deltaMap
      // key could be in original but removed from deltaMap
      // key could be in original but mapped to something else in deltaMap
      V result = deltaMap.put(key, value);
      if (result == null) {
        return originalMap.get(key);
      }
      if (result == nullValue) {
        return null;
      }
      if (result == removedValue) {
        return null;
      }
      return result;
    }
docs: This may cost twice what it would in the original Map because we have to find
  the original value for this key.
  
  @param key   key with which the specified value is to be associated.
  @param value value to be associated with the specified key.
  @return previous value associated with specified key, or <tt>null</tt>
  if there was no mapping for key.  A <tt>null</tt> return can
  also indicate that the map previously associated <tt>null</tt>
  with the specified key, if the implementation supports
  <tt>null</tt> values.