default <B extends AutoCloseable> @NotNull StorageFactory<B> compose(
    @NotNull ThrowableNotNullFunction<? super A, ? extends B, ? extends IOException> anotherStorageOpener
  ) {
    return storagePath -> wrapStorageSafely(storagePath, anotherStorageOpener);
  }
default <B extends AutoCloseable> @NotNull StorageFactory<B> compose(
    @NotNull ThrowableNotNullFunction<? super A, ? extends B, ? extends IOException> anotherStorageOpener
  )