docs: @Override
      public JsDestinationAddress getRoutingDestinationAddr(JsDestinationAddress inAddress,
                                                            boolean fixedMessagePoint)
                      throws SIResourceException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(tc, "getRoutingDestinationAddr", new Object[] { this,
                                                                         inAddress,
                                                                         Boolean.valueOf(fixedMessagePoint) });
  
          JsDestinationAddress routingAddress = null;
  
          // Pull out any encoded ME from a system or temporary queue
          SIBUuid8 encodedME = null;
          if (_isSystem || _isTemporary)
              encodedME = SIMPUtils.parseME(inAddress.getDestinationName());
  
          // If this is a system or temporary queue that is located on a different ME to us
          // we need to set the actual address as the routing destination.
          if ((encodedME != null) && !(encodedME.equals(getMessageProcessor().getMessagingEngineUuid())))
          {
              routingAddress = inAddress;
          }
          // The only other reason for setting a routing destination is if the sender is bound
          // (or will be bound) to a single message point. In which case we use the routing
          // address to transmit the chosen ME (added later by the caller)
          else if (fixedMessagePoint)
          {
              //TODO what if inAddres is isLocalOnly() or already has an ME?
  
              routingAddress = _destinationAddr;
          }
          else if ((inAddress != null) && (inAddress.getME() != null))
          {
              routingAddress = _destinationAddr;
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(tc, "getRoutingDestinationAddr", routingAddress);
  
          return routingAddress;
      }