@Override public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable { if (!aroundInvoked && Modifier.isPublic(method.getModifiers()) && !method.getDeclaringClass().equals(Object.class) && !"aroundSlimInvoke".equals(method.getName())) { aroundInvoked = true; try { return ((InteractionAwareFixture) obj).aroundSlimInvoke(interaction, method, args); } finally { aroundInvoked = false; } } else { return proxy.invokeSuper(obj, args); } } }