docs: protected Xid[] internalRecover(int flags) throws XAException
     {
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "internalRecover", ""+flags);
        
        Xid[] xids;
        
        try
        {
           CommsByteBuffer request = getCommsByteBuffer();
           request.putInt(getTransactionId());
           request.putInt(flags);
           if (fapLevel >= JFapChannelConstants.FAP_VERSION_5) {
              request.put((byte)(isMSResource ? 0x01 : 0x00));
           }
           
           CommsByteBuffer reply = jfapExchange(request, 
                                                JFapChannelConstants.SEG_XARECOVER, 
                                                JFapChannelConstants.PRIORITY_MEDIUM, 
                                                true);
  
           try
           {
              reply.checkXACommandCompletionStatus(JFapChannelConstants.SEG_XARECOVER_R, getConversation());
              
              short numberOfXids = reply.getShort();
              xids = new Xid[numberOfXids];
              
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(tc, "Received " + numberOfXids + " Xid(s)");
              
              for (int x = 0; x < numberOfXids; x++)
              {
                 xids[x] = reply.getXid();
                 if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(tc, "Xid[" + x + "]: " + xids[x]);
              }
           }
           finally
           {
              reply.release();
           }
        }
        catch (XAException xa)
        {
           // No FFDC Code needed
           // Simply re-throw...
           throw xa;
        }
        catch (Exception e)
        {
           FFDCFilter.processException(e, CLASS_NAME + ".recover",
                                       CommsConstants.SIXARESOURCEPROXY_RECOVER_01, this);
           
           if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(tc, "Caught a comms problem:", e);
           throw new XAException(XAException.XAER_RMFAIL);
        }
        
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "internalRecover");
        return xids;
     }