code: private synchronized void createProducerSession()
  
    throws SIResourceException
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "createProducerSession");
  
      if (iProducerSession == null)
      {
  
        try
        {
          iProducerSession =
            (ProducerSessionImpl) iProxyHandler
              .getMessageProcessor()
              .getSystemConnection()
              .createSystemProducerSession(iRemoteQueue, null, null, null, null);
        }
        catch (SIException e)
        {
          // No exceptions should occur as the destination should always exists
          // as it is created at start time.
          FFDCFilter.processException(
            e,
            "com.ibm.ws.sib.processor.proxyhandler.Neighbour.createProducerSession",
            "1:434:1.107",
            this);
  
          SibTr.exception(tc, e);
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
            SibTr.exit(tc, "createProducerSession", "SIResourceException");
  
          // this is already NLS'd //175907
          throw new SIResourceException(e);
        }
  
      }
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "createProducerSession");
    }
docs: Creates a producer session for sending the proxy messages to the Neighbours
  
  Opens the producer on the Neighbours remote Queue for sending to that
  Neighbour
  
  @exception SIResourceException  Thrown if the producer can not be created.