docs: public void rollback(Xid xid) throws XAException
      {
          if (tc.isEntryEnabled()) Tr.entry(tc, "rollback", new Object[]{_XARes, xid});
  
          try
          {
              _XARes.rollback(xid);
          }
          catch (XAException xae)
          {
              FFDCFilter.processException(xae, "com.ibm.ws.Transaction.JTA.XARminst.rollback", "295", this);
              int errorCode = xae.errorCode;
              if (tc.isDebugEnabled()) Tr.debug(tc, "XAException: error code " + XAReturnCodeHelper.convertXACode(errorCode), xae);
              if ((errorCode == XAException.XA_HEURRB) ||
                  (errorCode == XAException.XA_HEURCOM) ||
                  (errorCode == XAException.XA_HEURMIX) ||
                  (errorCode == XAException.XA_HEURHAZ))
              {
                  if (tc.isDebugEnabled()) Tr.debug(tc, "rollback returned heuristic");
                  try
                  {
                      _XARes.forget(xid);
                  }
                  catch (XAException xae2)
                  {
                      FFDCFilter.processException(xae2, "com.ibm.ws.Transaction.JTA.XARminst.rollback", "676", this);
                      errorCode = xae2.errorCode;
                      if (errorCode != XAException.XAER_NOTA)
                      {
                          Tr.error(tc, "WTRN0054_XA_FORGET_ERROR", new Object[] {XAReturnCodeHelper.convertXACode(errorCode), xae2});
                          if (tc.isEntryEnabled()) Tr.exit(tc, "rollback", xae2);
                          throw xae2;
                      }
                  }
              }
              else if ((errorCode == XAException.XAER_NOTA) ||
                       (errorCode == XAException.XAER_RMERR) ||
                       (errorCode >= XAException.XA_RBBASE &&
                        errorCode <= XAException.XA_RBEND))
              {
                  if (tc.isDebugEnabled()) Tr.debug(tc, "rollback complete");
              }
              else
              {
                  // XAER_PROTO, XAER_INVAL or XAER_RMFAIL
                  Tr.warning(tc, "WTRN0031_XA_ROLLBACK_FAILED", new Object[] {xid, xae});
                  if (tc.isEntryEnabled()) Tr.exit(tc, "rollback", xae);
                  throw xae;
              }
          }
  
          if (tc.isEntryEnabled()) Tr.exit(tc, "rollback");
      }