docs: private <T> CompletableFuture<T> executeCommandAndCommitIfNeededAsync(ContextBuilder contextBuilder, VisitableCommand command, int keyCount) {
        InvocationContext ctx = contextBuilder.create(keyCount);
        checkLockOwner(ctx, command);
        //noinspection unchecked
        return isTxInjected(ctx) ?
              executeCommandAsyncWithInjectedTx(ctx, command) :
              (CompletableFuture<T>) invoker.invokeAsync(ctx, command);
     }