@Override
public Object invoke(MethodInvocation invocation) throws Throwable {
LogIndentLevelHolder holder = (LogIndentLevelHolder) invocation.getThis();
Object[] args = invocation.getArguments();
Context context = (Context) args[CONTEXT];
ICommand command = (ICommand) args[COMMAND];
LogRecorder clr = context.getCurrentTestCase().getLogRecorder();
String indent = StringUtils.repeat(" ", holder.getLogIndentLevel());
String cmdStr = command.toString();
log.info(indent + cmdStr);
clr.info(indent + cmdStr);
try {
Result result = (Result) invocation.proceed();
logResult(clr, indent, cmdStr, result, context);