static <K, V> @NotNull FMap<K, V> of(@NotNull K key1, @NotNull V value1, @NotNull K key2, @NotNull V value2) {
    assert !key1.equals(key2);
    return new TwoKeysFMap<>(key1, value1, key2, value2);
  }
static <K, V> @NotNull FMap<K, V> of(@NotNull K key1, @NotNull V value1, @NotNull K key2, @NotNull V value2)