code: public SIMessageHandle getMessageHandle() {
          // If the transient is not set, build the handle from the values in the message and cache it.
          if (cachedMessageHandle == null) {
              byte[] b = (byte[]) jmo.getField(JsHdrAccess.SYSTEMMESSAGESOURCEUUID);
              if (b != null) {
                  cachedMessageHandle = new JsMessageHandleImpl(new SIBUuid8(b), (Long) jmo.getField(JsHdrAccess.SYSTEMMESSAGEVALUE));
              }
              else {
                  cachedMessageHandle = new JsMessageHandleImpl(null, (Long) jmo.getField(JsHdrAccess.SYSTEMMESSAGEVALUE));
              }
          }
          // Return the (possibly newly) cached value
          return cachedMessageHandle;
      }
docs: Get the message handle which uniquely identifies this message.
  
  @return An SIMessageHandle which identifies this message.