* <p>The provided transaction is specific to the given logical datastore type and cannot be used for any
* other.
*
+ * @param <D> datastore type
+ * @param <E> thrown exception type
+ * @param <R> result type
* @param datastoreType the {@link Datastore} type that will be accessed
* @param txFunction the {@link InterruptibleCheckedFunction} that needs a new read transaction
* @return the result of the function.
* <p>The provided transaction is specific to the given logical datastore type and cannot be used for any
* other.
*
+ * @param <D> datastore type
+ * @param <E> thrown exception type
+ * @param <R> result type
* @param datastoreType the {@link Datastore} type that will be accessed
* @param txFunction the {@link InterruptibleCheckedFunction} that needs a new read transaction
* @return the result of the function.
* {@link CompletionStage}
* (but better NOT by using the blocking {@link Future#get()} on it).
*
+ * @param <D> datastore type
+ * @param <E> thrown exception type
+ * @param <R> result type
* @param datastoreType the {@link Datastore} type that will be accessed
* @param txFunction the {@link InterruptibleCheckedFunction} that needs a new read-write transaction
* @return the {@link FluentFuture} returned by {@link ReadWriteTransaction#commit()}, or a failed future with an
* <p>The provided transaction is specific to the given logical datastore type and cannot be used for any
* other.
*
+ * @param <D> datastore type
+ * @param <E> thrown exception type
* @param datastoreType the {@link Datastore} type that will be accessed
* @param txConsumer the {@link InterruptibleCheckedFunction} that needs a new read transaction
* @throws E if an error occurs.
* <p>The provided transaction is specific to the given logical datastore type and cannot be used for any
* other.
*
+ * @param <D> datastore type
+ * @param <E> thrown exception type
* @param datastoreType the {@link Datastore} type that will be accessed
* @param txConsumer the {@link InterruptibleCheckedFunction} that needs a new read transaction
* @throws E if an error occurs.
* {@link CompletionStage}
* (but better NOT by using the blocking {@link Future#get()} on it).
*
+ * @param <D> datastore type
+ * @param <E> thrown exception type
* @param datastoreType the {@link Datastore} type that will be accessed
* @param txConsumer the {@link InterruptibleCheckedConsumer} that needs a new read-write transaction
* @return the {@link FluentFuture} returned by {@link ReadWriteTransaction#commit()}, or a failed future with an
* {@link CompletionStage}
* (but better NOT by using the blocking {@link Future#get()} on it).
*
+ * @param <D> datastore type
+ * @param <E> thrown exception type
* @param datastoreType the {@link Datastore} type that will be accessed
* @param txConsumer the {@link InterruptibleCheckedConsumer} that needs a new write only transaction
* @return the {@link FluentFuture} returned by {@link WriteTransaction#commit()}, or a failed future with an