docs: public int prepare(Xid xid) throws XAException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "prepare", "XID="+xid);
  
          int retval = XAResource.XA_OK;
  
          try
          {
              retval = _manager.prepare(new PersistentTranId(xid));
  
           
          }
          catch (XidStillAssociatedException xsae)
          {
              com.ibm.ws.ffdc.FFDCFilter.processException(xsae, "com.ibm.ws.sib.msgstore.transactions.MSDelegatingXAResource.prepare", "1:421:1.51.1.7", this);
              if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) SibTr.event(this, tc, "Cannot prepare transaction branch, resources are still associated with this Xid!", xsae);
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "prepare");
              XAException xaException = new XAException(XAException.XAER_PROTO);
              xaException.initCause(xsae);
              throw xaException;
          }
          catch (XidUnknownException xue)
          {
              com.ibm.ws.ffdc.FFDCFilter.processException(xue, "com.ibm.ws.sib.msgstore.transactions.MSDelegatingXAResource.prepare", "1:430:1.51.1.7", this);
              if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) SibTr.event(this, tc, "Cannot prepare transaction branch, Xid is unknown!", xue);
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "prepare");
              XAException xaException = new XAException(XAException.XAER_NOTA);
              xaException.initCause(xue);
              throw xaException;
          }
          catch (ProtocolException pe)
          {
              com.ibm.ws.ffdc.FFDCFilter.processException(pe, "com.ibm.ws.sib.msgstore.transactions.MSDelegatingXAResource.prepare", "1:439:1.51.1.7", this);
              if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) SibTr.event(this, tc, "A Transaction protocol error occurred during prepare of transaction branch!", pe);
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "prepare");
              XAException xaException = new XAException(XAException.XAER_PROTO);
              xaException.initCause(pe);
              throw xaException;
          }
          catch (RollbackException rbe)
          {
              com.ibm.ws.ffdc.FFDCFilter.processException(rbe, "com.ibm.ws.sib.msgstore.transactions.MSDelegatingXAResource.prepare", "1:448:1.51.1.7", this);
  
      
              if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) SibTr.event(this, tc, "RollbackException caught during prepare of transaction branch!", rbe);
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "prepare");
              XAException xaException = new XAException(XAException.XA_RBROLLBACK);
              xaException.initCause(rbe);
              throw xaException;
          }
          catch (SeverePersistenceException spe)
          {
              com.ibm.ws.ffdc.FFDCFilter.processException(spe, "com.ibm.ws.sib.msgstore.transactions.MSDelegatingXAResource.prepare", "1:463:1.51.1.7", this);
              if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) SibTr.event(this, tc, "Unexpected error occurred whilst persisting transaction work!", spe);
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "prepare");
              XAException xaException = new XAException(XAException.XAER_RMFAIL);
              xaException.initCause(spe);
              throw xaException;
          }
          catch (TransactionException te)
          {
              com.ibm.ws.ffdc.FFDCFilter.processException(te, "com.ibm.ws.sib.msgstore.transactions.MSDelegatingXAResource.prepare", "1:472:1.51.1.7", this);
              if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) SibTr.event(this, tc, "TransactionException occurred whilst preparing transaction work!", te);
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "prepare");
              XAException xaException = new XAException(XAException.XAER_RMFAIL);
              xaException.initCause(te);
              throw xaException;
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
          {
              String retstr;
              switch (retval)
              {
              case XAResource.XA_OK:
                      retstr = "return=XA_OK";
                      break;
              case XAResource.XA_RDONLY:
                      retstr = "return=XA_RDONLY";
                      break;
              default:
                      retstr = "return=XA_UNKNOWN";
              }
              SibTr.exit(this, tc, "prepare", retstr);
          }
          return retval;
      }