@Override
  public @NotNull FMap<K, V> plus(@NotNull K key, @NotNull V value) {
    if (myKey1.equals(key)) {
      if (myValue1.equals(value)) {
        return this;
      }
      else {
        return new TwoKeysFMap<>(key, value, myKey2, myValue2);
      }
    }
    else if (myKey2.equals(key)) {
      if (myValue2.equals(value)) {
        return this;
      }
      else {
        return new TwoKeysFMap<>(myKey1, myValue1, key, value);
      }
    }
    else {
      return new ArrayBackedFMap<>(myKey1, myValue1, myKey2, myValue2, key, value);
    }
  }
@Override
  public @NotNull FMap<K, V> plus(@NotNull K key, @NotNull V value)