docs: public void forget(Xid xid) throws XAException {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              Tr.entry(this, tc, "forget", new Object[]
              {
               ivManagedConnection,
               AdapterUtil.toString(xid) 
                       });
  
          // if the MC marked Stale, it means the user requested a purge pool with an immediate option
          // so don't allow any work to continue.  In this case, we throw XAER_RMFAIL xa error
          // which indicates that the resource manager is not available
          if (ivManagedConnection._mcStale) {
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) 
                  Tr.debug(this, tc, "MC is stale throwing XAER_RMFAIL", ivManagedConnection);
              Tr.error(tc, "INVALID_CONNECTION");
              throw new XAException(XAException.XAER_RMFAIL);
          }
  
          if (ivXid == null) { 
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) 
                  Tr.debug(this, tc, "XAResource.start was never issued; allowing to forget for recovery.");
          }
  
          // For XAResource.forget, only trace an Xid mismatch. 
          if (TraceComponent.isAnyTracingEnabled() && !xid.equals(ivXid) && tc.isDebugEnabled()) 
              Tr.debug(this, tc, "Xid does not match.", new Object[]
              {
               "XAResource.start:  ",
               AdapterUtil.toString(ivXid), 
               "XAResource.forget: ",
               AdapterUtil.toString(xid) 
                       });
  
          try {
              // since we are not forgetting the tran when we get heuristic exception in commit/rollback, we will really pass forget
              // to the database here.
              ivXaRes.forget(xid);
  
              ivStateManager.setState(WSStateManager.XA_FORGET);
          } catch (TransactionException te) {
              //Exception means setState failed because it was invalid to set the state in this case
              FFDCFilter.processException(te, "com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl.forget", "284", this);
              Tr.error(tc, "INVALID_TX_STATE", new Object[] { "XAResource.forget()", ivManagedConnection.getTransactionStateAsString() });
              traceXAException(new XAException(XAException.XA_RBPROTO), currClass);
          }
          catch (XAException xaE) {
              FFDCFilter.processException(xaE, "com.ibm.ws.rsadapter.spi.WSRdbXaResourceImpl.forget", "489", this);
              traceXAException(xaE, currClass);
              checkXAException(xaE); 
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  Tr.exit(this, tc, "forget", xaE);
              throw xaE;
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              Tr.exit(this, tc, "forget");
      }