### Question:
TraceInterceptor implements MethodInterceptor { @Override public Object invoke(MethodInvocation invocation) throws Throwable { if (!log.isDebugEnabled()) { return invocation.proceed(); } log.debug(startLog(invocation)); long startTime = System.nanoTime(); indents.set(indents.get() + 1); try { return invocation.proceed(); } finally { indents.set(indents.get() - 1); long stopTime = System.nanoTime(); log.debug(stopLog(invocation, stopTime - startTime)); } }  @Override Object invoke(MethodInvocation invocation);  }### Answer:
@Test public void testInvoke() { assertEquals("aaabbb", target.method1("aaa", "bbb")); assertEquals("cccddd", target.method1("ccc", "ddd")); }