code: private void sendUsingProducerSession(Message message, int deliveryMode, int priority, long timeToLive) throws JMSException {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "sendUsingProducerSession", new Object[] { message, deliveryMode, priority, timeToLive });
  
          // if the producer is closed throw a JMSException.
          checkClosed();
          // check for sync/async conflicts
          session.checkSynchronousUsage("send");
          // if the supplied message is null, throw a jms MessageFormatException.
          if (message == null) {
              throw (MessageFormatException) JmsErrorUtils.newThrowable(
                                                                        MessageFormatException.class,
                                                                        "INVALID_VALUE_CWSIA0068",
                                                                        new Object[] { "message", null },
                                                                        tc);
          }
  
          // Mark that we have overriden the previous properties in the PP
          // object in case the next send call is using the 1-arg send.
          propsOverriden = true;
  
          // Set the parameter values into the producer properties object. The
          // producerProperties object contains sufficient intelligence that
          // if any of these particular values has already been set then it
          // does not recalculate anything.
          producerProperties.setInDeliveryMode(deliveryMode);
          producerProperties.setInPriority(priority);
          producerProperties.setInTTL(timeToLive);
  
          // Delegate to the internal send method.
          sendMessage(producerProperties, message, dest);
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(this, tc, "sendUsingProducerSession");
  
      }
docs: This method is internal method which would send message to ME on top
  of producer session. This is called from Sync send and Async Send. In case of Sync send
  it would have guarded with monitor sessionSyncLock.
  
  @param message
  @param deliveryMode
  @param priority
  @param timeToLive
  @throws JMSException