if (definition.retryOn(lastEx)) {
ArgumentSaver argSaver = definition.getArgumentSaver();
CleanUpContext context = this.cleanUpContextFactory
.createCleanUpContext(invocation.getMethod(), lastEx,
argSaver);
CleanUpStrategy strategy = definition.getCleanUpStrategy();
if (strategy.giveUpTotaly(context)) {
doLog("strategy says we should give up", exceptions);
throw lastEx;
}
strategy.cleanUp(context);
Object[] loadedArgs = argSaver.restoreArgs();
try {
return invocation.proceed(loadedArgs);
} catch (Throwable ex) {
exceptions.add(ex);