code: protected synchronized Dispatchable getThreadContext()
     {
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "getThreadContext");
  
        // Start D202625
        // Save the position of the data
        int currentPos = data.position();
        int currentLimit = data.limit();
        Dispatchable dis = null;
  
        try
        {
           dis = listener.getThreadContext(conversation, data, segmentType);
        }
        catch (Throwable t)
        {
           FFDCFilter.processException(t, "com.ibm.ws.sib.jfapchannel.impl.rldispatcher.ConversationReceiveListenerDataReceivedInvocation.getThreadContext",
                                       JFapChannelConstants.CRLDATARECEIVEDINVOKE_GETTHREADCONTEXT_01,
                                       this);
  
           if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "exception thrown by getThreadContext");
           if (TraceComponent.isAnyTracingEnabled() && tc.isEventEnabled()) SibTr.exception(this, tc, t);
  
           // User has thrown an exception from getThreadContext method.  Probably
           // the best way to deal with this is to invalidate their connection.
           // That'll learn 'em.
           connection.invalidate(true, t, "exception thrown from getThreadContext - "+t.getMessage());  // D224570
  
           // Throw this bad boy to indicate to the dispatcher that something has gone wrong and
           // that it should abort processing this segment.
           throw new SIErrorException(TraceNLS.getFormattedMessage(JFapChannelConstants.MSG_BUNDLE, "CRLDRI_INTERNAL_SICJ0065", null, "CRLDRI_INTERNAL_SICJ0065")); // D226223
        }
  
        // Make sure we re-position the data
        data.position(currentPos);
        data.limit(currentLimit);
        // End D202625
  
        if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "getThreadContext",dis);
        return dis;
     }
docs: This method will ask the receive listener for the thread context.
  
  @return Returns any thread context that the receive listener has for this data.