@Override
  public Set<Entry<Pair<Integer, StructLike>, V>> entrySet() {
    Set<Entry<Pair<Integer, StructLike>, V>> entrySet = Sets.newHashSet();

    for (Entry<Integer, Map<StructLike, V>> specIdAndPartitionMap : partitionMaps.entrySet()) {
      int specId = specIdAndPartitionMap.getKey();
      Map<StructLike, V> partitionMap = specIdAndPartitionMap.getValue();
      for (Entry<StructLike, V> structAndValue : partitionMap.entrySet()) {
        entrySet.add(new PartitionEntry<>(specId, structAndValue));
      }
    }

    return Collections.unmodifiableSet(entrySet);
  }
@Test
  public void testEntrySet() {
    PartitionMap<String> map = PartitionMap.create(SPECS);
    map.put(BY_DATA_SPEC.specId(), Row.of("aaa"), "v1");
    map.put(BY_DATA_CATEGORY_BUCKET_SPEC.specId(), Row.of("bbb", 2), "v2");
    map.put(BY_DATA_SPEC.specId(), CustomRow.of("ccc"), "v3");
    assertThat(map.entrySet()).hasSize(3);
  }