docs: private void sendUsingConnection(Destination destination, Message message, int deliveryMode, int priority, long timeToLive) throws JMSException {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "sendUsingConnection", new Object[] { destination, 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);
          }
  
          //validates destination and if it is successful gives native destination.
          JmsDestinationImpl nativeDest = validateDestination(destination);
  
          // Create a new ProducerProps on the fly for these parameters.
          ProducerProperties pp = new ProducerProperties(nativeDest, this, session.getPassThruProps(), null, null);
          pp.setInDeliveryMode(deliveryMode);
          pp.setInPriority(priority);
          pp.setInTTL(timeToLive);
  
          // Delegate to the internal send method.
          sendMessage(pp, message, nativeDest);
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(this, tc, "sendUsingConnection");
  
      }