rollbackException.initCause(preexistingRollbackOnlyCallerStacktrace);
} else if(_theTransaction.getDeferredThrowable() != null) {
// problems occurring during beforeCompletion (the only place deferredThrowable is set) take priority
// over 'immediately prior' (i.e. after the commit call - likely from within beforeCompletion) calls to setRollbackOnly
// despite the small chance that the causal relationship is not infact valid
rollbackException.initCause(_theTransaction.getDeferredThrowable());
} else if(_rollbackOnlyCallerStacktrace != null) {
// we tried to commit but it went wrong, resulting in a call to setRollbackOnly from within a
// beforeCompletion. The beforeCompletion did not then throw an exception as that would be handled above
rollbackException.initCause(_rollbackOnlyCallerStacktrace);
}