docs: private void alterDestinationLocalization(
                                                DestinationDefinition destinationDefinition,
                                                LocalizationDefinition destinationLocalizationDefinition,
                                                Set<String> destinationLocalizingMEs,
                                                LocalTransaction transaction)
                      throws SIResourceException, SITemporaryDestinationNotFoundException, SINotPossibleInCurrentConfigurationException
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(
                          tc,
                          "alterDestinationLocalization",
                          new Object[] {
                                        destinationDefinition,
                                        destinationLocalizationDefinition,
                                        destinationLocalizingMEs,
                                        transaction });
  
          BaseDestinationHandler destinationHandler = null;
  
          //The destination is being created on the local messaging engine.
          SIBUuid8 messagingEngineUuid = messageProcessor.getMessagingEngineUuid();
  
          DestinationTypeFilter filter = new DestinationTypeFilter();
          filter.VISIBLE = Boolean.TRUE;
          filter.ALIAS = Boolean.FALSE;
          filter.FOREIGN_DESTINATION = Boolean.FALSE;
          DestinationHandler dh = destinationIndex.findByUuid(destinationDefinition.getUUID(), filter);
  
          // Check the destination exists
          checkDestinationHandlerExists(
                                        dh != null,
                                        destinationDefinition.getName(),
                                        messageProcessor.getMessagingEngineName());
  
          destinationHandler = (BaseDestinationHandler) dh;
  
          //if the destination is a queue we need to check the configuration
          if (!destinationHandler.isPubSub())
          {
              boolean validAlteration = false;
              //See if the destination has a local queue point
              validAlteration = destinationHandler.hasLocal();
              //Check that the destination is not a system destination or a temporary destination
              validAlteration = validAlteration &&
                                !(dh.isTemporary() || dh.isSystem());
              if (!validAlteration)
              {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                      SibTr.exit(
                                 tc,
                                 "alterDestinationLocalization",
                                 "Invalid destination alteration");
  
                  SIMPNotPossibleInCurrentConfigurationException e = new SIMPNotPossibleInCurrentConfigurationException(
                                  nls.getFormattedMessage(
                                                          "INVALID_DEST_ALTER_ERROR_CWSIP0045",
                                                          new Object[] { destinationDefinition.getName(), messageProcessor.getMessagingEngineName() },
                                                          null));
                  throw e;
              }
          }//end check
  
          //A further check that the destination alter call is valid
          checkValidLocalizationConfig(destinationDefinition,
                                       messagingEngineUuid,
                                       destinationLocalizationDefinition,
                                       destinationLocalizingMEs);
  
          synchronized (destinationHandler)
          {
              // Treat as if the destination does not exist if it is to be deleted
              checkDestinationHandlerExists(
                                            !destinationHandler.isToBeDeleted(),
                                            destinationDefinition.getName(),
                                            messageProcessor.getMessagingEngineName());
  
              if (destinationHandler.getDestinationType() != destinationDefinition.getDestinationType())
              {
                  if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                      SibTr.exit(tc, "alterDestinationLocalization", "SIErrorException");
                  throw new SIErrorException(
                                  nls.getFormattedMessage(
                                                          "INTERNAL_CONFIGURATION_ERROR_CWSIP0006",
                                                          new Object[] { messageProcessor.getMessagingEngineBus(), "1:4483:1.508.1.7", destinationHandler.getName() },
                                                          null));
              }
  
              // Only update destination handler objects with WCCM information if
              // we have not already detected them as corrupt.
              if (!destinationHandler.isCorruptOrIndoubt())
              {
                  /*
                   * The create should complete succesfully, with the new destination
                   * definition replacing the existing one.
                   */
                  if (isQueue(destinationHandler.getDestinationType()))
                  {
                      if (destinationLocalizationDefinition != null)
                      {
                          // Update the localisation definition too.
                          destinationHandler.updateLocalizationDefinition(destinationLocalizationDefinition, transaction);
                      }
                  } // eof is q
                  else if (destinationHandler.getDestinationType() == DestinationType.TOPICSPACE)
                  {
                      destinationHandler.updateLocalizationDefinition(destinationLocalizationDefinition, transaction);
                  } // eof is topicspace
  
                  destinationHandler.updateDefinition(destinationDefinition);
  
                  destinationHandler.updateLocalizationSet(
                                  destinationLocalizingMEs);
  
                  // Alert the lookups object to handle the re-definition
                  destinationIndex.setLocalizationFlags(destinationHandler);
              }
  
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(tc, "alterDestinationLocalization");
  
          return;
      }