@Override protected Object handleDefault(InvocationContext ctx, VisitableCommand command) throws Throwable { if (!blockAfter) { blockIfNeeded(ctx, command); } return invokeNextAndFinally(ctx, command, (rCtx, rCommand, rv, t) -> { if (blockAfter) { blockIfNeeded(rCtx, rCommand); } }); } }