docs: private static String validateDestination(
              final JsMessagingEngine messagingEngine, final String busName,
              final String destinationName, final DestinationType destinationType)
              throws NotSupportedException, ResourceAdapterInternalException {
  
          final String methodName = "validateDestination";
          if (TraceComponent.isAnyTracingEnabled() && TRACE.isEntryEnabled()) {
              SibTr.entry(TRACE, methodName, new Object[] { messagingEngine,
                      busName, destinationName, destinationType });
          }
  
          /*
           * The destination may contain a null bus name so, for clarity in
           * messages, use the name from the messaging engine if this is the case
           */
          final String resolvedBusName = (((busName == null) || ""
                  .equals(busName)) ? messagingEngine.getBusName() : busName);
  
          final String uuid;
  
          try {
  
              /*
               * Obtain destination definition
               */
  
              final BaseDestinationDefinition destinationDefinition = messagingEngine
                      .getSIBDestination(busName, destinationName);
  
              /*
               * Foreign destinations are not supported
               */
  
              if (destinationDefinition.isForeign()) {
  
                  throw new NotSupportedException(NLS.getFormattedMessage(
                          ("FOREIGN_DESTINATION_CWSIV0754"), new Object[] {
                                  destinationName, resolvedBusName }, null));
  
              }
  
              if (destinationDefinition.isLocal()) {
  
                  /*
                   * Local destinations must be of the correct type
                   */
  
                  final DestinationDefinition localDefinition = (DestinationDefinition) destinationDefinition;
  
                  if (destinationType
                          .equals(localDefinition.getDestinationType())) {
  
                      uuid = destinationDefinition.getUUID().toString();
  
                  } else {
  
                      /*
                       * The destination resolved to the wrong type
                       */
  
                      throw new NotSupportedException(NLS.getFormattedMessage(
                              ("INCORRECT_TYPE_CWSIV0755"), new Object[] {
                                      destinationName, resolvedBusName,
                                      destinationType,
                                      localDefinition.getDestinationType() },
                              null));
  
                  }
  
              } else if (destinationDefinition.isAlias()) {
  
                  /*
                   * Recursively check an alias destination
                   */
  
                  final DestinationAliasDefinition aliasDefinition = (DestinationAliasDefinition) destinationDefinition;
                  uuid = validateDestination(messagingEngine, aliasDefinition
                          .getTargetBus(), aliasDefinition.getTargetName(),
                          destinationType);
  
              } else {
  
                  /*
                   * Unknown destination type
                   */
  
                  throw new ResourceAdapterInternalException(
                          NLS
                                  .getFormattedMessage(
                                          ("UNKNOWN_TYPE_CWSIV0756"),
                                          new Object[] { destinationName,
                                                  resolvedBusName }, null));
  
              }
  
          } catch (final SIBExceptionDestinationNotFound exception) {
  
              FFDCFilter.processException(exception, CLASS_NAME + "."
                      + methodName, FFDC_PROBE_1);
              if (TraceComponent.isAnyTracingEnabled() && TRACE.isEventEnabled()) {
                  SibTr.exception(TRACE, exception);
              }
              throw new NotSupportedException(NLS.getFormattedMessage(
                      ("NOT_FOUND_CWSIV0757"), new Object[] { destinationName,
                              resolvedBusName }, null), exception);
  
          } catch (final SIBExceptionBase exception) {
  
              FFDCFilter.processException(exception, CLASS_NAME + "."
                      + methodName, FFDC_PROBE_2);
              if (TraceComponent.isAnyTracingEnabled() && TRACE.isEventEnabled()) {
                  SibTr.exception(TRACE, exception);
              }
              throw new ResourceAdapterInternalException(NLS
                      .getFormattedMessage(("UNEXPECTED_EXCEPTION_CWSIV0758"),
                              new Object[] { destinationName, resolvedBusName,
                                      exception }, null), exception);
  
          }
  
          if (TraceComponent.isAnyTracingEnabled() && TRACE.isEntryEnabled()) {
              SibTr.exit(TRACE, methodName, uuid);
          }
          return uuid;
  
      }