docs: public final TrmMessage makeInboundTrmMessage() throws IncorrectMessageTypeException {
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "makeInboundTrmMessage");
  
      TrmMessage trmMessage = null;
  
      /* If the message has never been flattened/encoded, it will already be */
      /* a TrmMessage so we can just proceed with this recast.                */
      if (this instanceof TrmMessageImpl) {
        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "Incoming message is already a TrmMessage");
        trmMessage = (TrmMessageImpl)this;
      }
      /* If not, we need to make it an instance of the right sub-class        */
      /* The incoming message should already be a TRM message, so determine     */
      /* which flavour and create the right specialization to return.           */
      else if (getJsMessageType() == MessageType.TRM) {
        // Ensure pending changes are flushed to JMF before passing the JMO around
        updateDataFields(MfpConstants.UDF_MAKE_INBOUND_OTHER);
        trmMessage = trmFactory.createInboundTrmMessage(jmo, getSubtype());
      }
      /* If the incoming message is some other sort of message it is an error.  */
      else {
        if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "Not a TRM Message");
        String exString = nls.getFormattedMessage("UNEXPECTED_MESSAGE_TYPE_CWSIF0102"
            ,new Object[] {getJsMessageType(), MessageType.TRM}
            ,"The Message is not a TRM Message");
        throw new IncorrectMessageTypeException(exString);
      }
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "makeInboundTrmMessage");
      return trmMessage;
    }