@Override
  public @NotNull <V> KeyFMap plus(@NotNull Key<V> key, @NotNull V value) {
    int keyCode = key.hashCode();
    assert keyCode >= 0 : key;
    //noinspection unchecked
    V oldValue = (V)get(keyCode);
    return value == oldValue ? this : new MapBackedFMap(this, keyCode, value);
  }
@Override
  public @NotNull <V> KeyFMap plus(@NotNull Key<V> key, @NotNull V value)