docs: @Override
      public JMSProducer createProducer() {
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "createProducer");
  
          JMSProducer jmsProducer = null;
          try {
              // Create messageproducer first, since we reuse most in jmsproducer
              // destination is passed as null because during send,destination is passed
              // jmssession.createproducer() is not used becuase it stores the list of producers
              // which is not required for simplified API's
              MessageProducer msgProducer = jmsSession.instantiateProducer(null);
              jmsProducer = new JmsJMSProducerImpl(msgProducer);
          } catch (JMSException e) {
              // should never have got here because we pass destination as null so there is no chance 
              // that instantiateProducer() will throw any exception
  
              FFDCFilter.processException(e,
                                          JmsJMSContextImpl.class.toString() + ".createProducer",
                                          "598", this);
          }
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(this, tc, "createProducer");
  
          return jmsProducer;
  
      }