public V computeIfAbsent(int specId, StructLike struct, Supplier<V> valueSupplier) {
    Map<StructLike, V> partitionMap = partitionMaps.computeIfAbsent(specId, this::newPartitionMap);
    return partitionMap.computeIfAbsent(struct, key -> valueSupplier.get());
  }
@Test
  public void testComputeIfAbsent() {
    PartitionMap<String> map = PartitionMap.create(SPECS);

    String result1 = map.computeIfAbsent(BY_DATA_SPEC.specId(), Row.of("a"), () -> "v1");
    assertThat(result1).isEqualTo("v1");
    assertThat(map.get(BY_DATA_SPEC.specId(), CustomRow.of("a"))).isEqualTo("v1");

    // verify existing key is not affected
    String result2 = map.computeIfAbsent(BY_DATA_SPEC.specId(), CustomRow.of("a"), () -> "v2");
    assertThat(result2).isEqualTo("v1");
    assertThat(map.get(BY_DATA_SPEC.specId(), CustomRow.of("a"))).isEqualTo("v1");
  }