public void intercept(IMethodInvocation invocation) throws Throwable {
try {
invocation.proceed();
} catch (Throwable t) {
if (failsWith.value().isInstance(t)) return;
throw new WrongExceptionThrownError(failsWith.value(), t);
}
throw new WrongExceptionThrownError(failsWith.value(), null);
}