docs: public final JsJmsMessage makeInboundJmsMessage()  throws IncorrectMessageTypeException {
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "makeInboundJmsMessage");
  
      JsJmsMessageImpl jmsMessage = null;
  
      /* The message should always already be a JsJmsMessage of the correct   */
      /* specialisation, even if it has arrived over the wire from another ME */
      /* or MQ.                                                               */
      if (this instanceof JsJmsMessageImpl) {
        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "Incoming message is already a JsJmsMessage");
        jmsMessage = (JsJmsMessageImpl)this;
      }
      /* If the incoming message is already a JMS message, just determine which */
      /* flavour and create the right specialization to return.                 */
      else if (getJsMessageType() == MessageType.JMS) {
        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "Incoming message has MessageType of JMS");
        updateDataFields(MfpConstants.UDF_MAKE_INBOUND_JMS);
        jmsMessage = (JsJmsMessageImpl)jmsFactory.createInboundJmsMessage(jmo, getSubtype());
      }
      else {
        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "Not a JMS Message");
        String exString = nls.getFormattedMessage("UNEXPECTED_MESSAGE_TYPE_CWSIF0102"
                                                 ,new Object[] {getJsMessageType(), MessageType.JMS}
                                                 ,"The Message can not be represented as JMS Message");
        throw new IncorrectMessageTypeException(exString);
      }
  
      /* Fix up any default/derived JMS fields necessary.                       */
      jmsMessage.setDerivedJmsFields();
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "makeInboundJmsMessage");
      return jmsMessage;
    }