public static <K, V> @NotNull Map<K, V> readMap(
    @NotNull IonReader reader,
    @Nullable String fieldName,
    @NotNull Supplier<? extends K> keyReader,
    @NotNull Supplier<? extends V> valueReader
  ) {
    reader.next();
    assertFieldName(reader, fieldName);
    reader.stepIn();
    Map<K, V> map = new HashMap<>();
    while (reader.next() != null) {
      reader.stepIn();
      map.put(keyReader.get(), valueReader.get());
      reader.stepOut();
    }
    reader.stepOut();
    return map;
  }
public static <K, V> @NotNull Map<K, V> readMap(
    @NotNull IonReader reader,
    @Nullable String fieldName,
    @NotNull Supplier<? extends K> keyReader,
    @NotNull Supplier<? extends V> valueReader
  )