docs: static void rcvCreateUCTransaction(CommsByteBuffer request, Conversation conversation,
                                        int requestNumber, boolean allocatedFromBufferPool,
                                        boolean partOfExchange)
     {
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(tc, "rcvCreateUCTransaction",
                                             new Object[]
                                             {
                                                request,
                                                conversation,
                                                ""+requestNumber,
                                                ""+allocatedFromBufferPool
                                              });
  
        ConversationState convState = (ConversationState) conversation.getAttachment();
  
        short connectionObjectId = request.getShort();  // BIT16 ConnectionObjectId
        int clientTransactionId = request.getInt();     // BIT32 Client transaction Id
  
        // By default subordinates are allowed - however, a FAP version 5 client may specifically
        // request that a local transaction does not support them.
        // see the ConnectionProxy.createUncoordinateTransaction(boolean) method javadoc comment
        // for more details.
        boolean allowSubordinates = true;
        if (conversation.getHandshakeProperties().getFapLevel() >= JFapChannelConstants.FAP_VERSION_5)
        {
           allowSubordinates = (request.get() & 0x01) == 0x01;
        }
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
        {
           SibTr.debug(tc, "SICoreConnection Id:", connectionObjectId);
           SibTr.debug(tc, "Client transaction Id:", clientTransactionId);
        }
  
        CATConnection catConn = (CATConnection) convState.getObject(connectionObjectId);
        SICoreConnection connection = catConn.getSICoreConnection();
  
        ServerLinkLevelState linkState = (ServerLinkLevelState) conversation.getLinkLevelAttachment();
        SIUncoordinatedTransaction ucTran = null;
        try
        {
           ucTran = connection.createUncoordinatedTransaction(allowSubordinates);
  
        }
        // Don't bother with all the different types seeing as we don't throw them back
        catch (SIException e)
        {
           //No FFDC code needed
           //Only FFDC if we haven't received a meTerminated event.
           if(!convState.hasMETerminated())
           {
              FFDCFilter.processException(e,
                                          CLASS_NAME + ".rcvCreateUCTransaction",
                                          CommsConstants.STATICCATTRANSACTION_CREATE_01);
           }
  
           if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(tc, "Failed to create the transaction", e);
  
           // We have to mark this transaction as error now - so as to indicate to everyone that
           // it should not be used
           linkState.getTransactionTable().addLocalTran(clientTransactionId, conversation.getId(), IdToTransactionTable.INVALID_TRANSACTION);
           linkState.getTransactionTable().markAsRollbackOnly(clientTransactionId, e);
        }
  
        // If transaction creation succeeded then add it to the link level state table of
        // transactions.
        if (ucTran != null)
        {
           linkState.getTransactionTable().addLocalTran(clientTransactionId,
                                                        conversation.getId(),
                                                        ucTran);
        }
  
        request.release(allocatedFromBufferPool);
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(tc, "rcvCreateUCTransaction");
     }