docs: 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");
  
      }