class StoreTransaction implements UpdatableStore.StoreTransaction {

  @Override
  public SignedBlockAndState getLatestFinalizedBlockAndState() {
    if (finalized_checkpoint.isPresent()) {
      // Ideally we wouldn't join here - but seems not worth making this API async since we're
      // unlikely to call this on tx objects
      return retrieveBlockAndState(finalized_checkpoint.get().getRoot()).join().orElseThrow();
    }
    return store.getLatestFinalizedBlockAndState();
  }

    StoreTransaction(
      final Store store,
      final ReadWriteLock lock,
      final StorageUpdateChannel storageUpdateChannel,
      final UpdatableStore.StoreUpdateHandler updateHandler);

}