code: private final JsMessage createSpecialisedMessage(JsMsgObject jmo) {
  
      JsMessage message = null;
  
      /* For an API message, we need to return an instance of the appropriate   */
      /* specialisation.                                                        */
      if (jmo.getChoiceField(JsHdrAccess.API) == JsHdrAccess.IS_API_DATA) {
  
        /* If it is a JMS message, get the right specialisation                 */
        if (jmo.getField(JsHdrAccess.MESSAGETYPE).equals(MessageType.JMS.toByte())) {
          message = getJmsFactory().createInboundJmsMessage(jmo, ((Byte)jmo.getField(JsHdrAccess.SUBTYPE)).intValue());
        }      
      }
  
      /* If it isn't an API message, just return a JsMessageImpl                */
      else {
        message = new JsMessageImpl(jmo);
      }
  
      return message;
    }
docs: Returns a new JsMessage instance, of the subclass appropriate to the
  message content.
  
  @param jmo        The JsMsgObject containing the guts of the message
  
  @return JsMessage A new instance of the appropriate JsMessage implementation