docs: private DestinationHandler loadDestination(String destinationId, String busName, AliasChainValidator validator, boolean findByName) throws SINotPossibleInCurrentConfigurationException, SIMPDestinationCorruptException, SIResourceException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(tc, "loadDestination", new Object[] { destinationId, busName, validator, Boolean.valueOf(findByName) });
  
          DestinationHandler destinationHandler = null;
  
          try
          {
              BaseDestinationDefinition bdd = null;
              if (findByName)
                  bdd = messageProcessor.getMessagingEngine().getSIBDestination(busName, destinationId);
              else
                  bdd = messageProcessor.getMessagingEngine().getSIBDestinationByUuid(busName, destinationId);
  
              // The returned destination can be remote or an alias.  We need to act
              // accordingly.
              if (bdd.isAlias())
              {
                  // The destination is an alias.
                  DestinationAliasDefinition add = (DestinationAliasDefinition) bdd;
  
                  destinationHandler = createAliasDestination(add, validator, null);
              }
              else if (bdd.isForeign())
              {
                  // The destination is foreign.
                  DestinationForeignDefinition dfd = (DestinationForeignDefinition) bdd;
  
                  destinationHandler = createForeignDestination(dfd, busName);
              }
              else
              {
                  /*
                   * Assume the definition is local, but the actual destination is remote.
                   */
  
                  // Try to add the remote destination.
                  try
                  {
                      DestinationDefinition dDef = (DestinationDefinition) bdd;
  
                      Set<String> queuePointLocalitySet =
                                      messageProcessor.getSIBDestinationLocalitySet(busName, dDef.getUUID().toString(), false);
  
                      if ((queuePointLocalitySet.contains(messageProcessor.getMessagingEngineUuid().toString())) ||
                          ((dDef.getDestinationType() == DestinationType.QUEUE) && queuePointLocalitySet.size() == 0) ||
                          ((dDef.getDestinationType() == DestinationType.PORT) && queuePointLocalitySet.size() == 0))
                      {
                          //Error case as destination should either be localised on this ME or should
                          //be localised somewhere
                          SIErrorException e = new SIErrorException(
                                          nls.getFormattedMessage(
                                                                  "INTERNAL_CONFIGURATION_ERROR_CWSIP0006",
                                                                  new Object[] { "DestintionManager", "1:1597:1.508.1.7", dDef.getName() },
                                                                  null));
                          FFDCFilter.processException(
                                                      e,
                                                      "com.ibm.ws.sib.processor.impl.DestinationManager.loadDestination",
                                                      "1:1602:1.508.1.7",
                                                      this);
  
                      }
                      else
                      {
                          destinationHandler =
                                          createRemoteDestination(dDef, queuePointLocalitySet);
                      }
                  } catch (SIException e)
                  {
                      // No FFDC code needed
  
                      SibTr.exception(tc, e);
  
                      // TODO - handle this
                      // throw e;
                  }
              }
          }
  
          // Catch Admin's SIBExceptionDestinationNotFound exception
          catch (SIBExceptionDestinationNotFound e)
          {
              // No FFDC code needed
  
              SibTr.exception(tc, e);
  
              // Exception not fatal - just return null to show no destiation has been
              // found.
          } catch (SIBExceptionBase e)
          {
              // No FFDC code needed
  
              SibTr.exception(tc, e);
  
              // TO DO - handle this
          } catch (SIResourceException e)
          {
              // No FFDC code needed
              if (!(e instanceof SIMPResourceException))
              {
                  SIMPResourceException ee = new SIMPResourceException(e);
                  ee.setExceptionReason(SIRCConstants.SIRC0901_INTERNAL_MESSAGING_ERROR);
                  ee.setExceptionInserts(new String[] { "com.ibm.ws.sib.processor.impl.DestinationManager.loadDestination",
                                                       "1:1650:1.508.1.7",
                                                       SIMPUtils.getStackTrace(e) });
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                      SibTr.exit(tc, "loadDestination", ee);
                  throw ee;
              }
  
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  SibTr.exit(tc, "loadDestination", e);
              throw e;
  
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(tc, "loadDestination", destinationHandler);
  
          return destinationHandler;
      }