docs: @Override
     public Object handleDefault(InvocationContext ctx, VisitableCommand command) throws Throwable {
        if (!ctx.isOriginLocal()) {
           // Nothing to do for remote calls
           return invokeNext(ctx, command);
        }
  
        Transaction tx;
        if (transactionManager.getTransaction() != null || (tx = batchContainer.getBatchTransaction()) == null) {
           // The active transaction means we are in an auto-batch.
           // No batch means a read-only auto-batch.
           // Either way, we don't need to do anything
           return invokeNext(ctx, command);
        }
  
        try {
           transactionManager.resume(tx);
           if (ctx.isInTxScope()) {
              return invokeNext(ctx, command);
           }
  
           log.tracef("Called with a non-tx invocation context: %s", ctx);
           InvocationContext txInvocationContext = invocationContextFactory.createInvocationContext(true, -1);
           return invokeNext(txInvocationContext, command);
        } finally {
           suspendTransaction();
        }
     }