docs: @Override
     public void rollback() throws IllegalStateException, SystemException {
        if (trace) {
           log.tracef("Transaction.rollback() invoked in transaction with Xid=%s", xid);
        }
        if (isDone()) {
           throw new IllegalStateException("Transaction is done. Cannot rollback transaction");
        }
        try {
           status = Status.STATUS_MARKED_ROLLBACK;
           endResources();
           runCommit(false);
        } catch (HeuristicMixedException | HeuristicRollbackException e) {
           log.errorRollingBack(e);
           SystemException systemException = new SystemException("Unable to rollback transaction");
           systemException.initCause(e);
           throw systemException;
        } catch (RollbackException e) {
           //ignored
           if (trace) {
              log.trace("RollbackException thrown while rolling back", e);
           }
        }
     }