docs: public void destinationUnavailable (SIBUuid12 destId, Capability capability)
    {
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.entry(tc, "destinationUnavailable",
          new Object[]{destId, capability});
      
      Set<SIBUuid8> available = new HashSet<SIBUuid8>(); // Empty set of available MEs. The destination is unavailable.
      Set<SIBUuid8> unavailable = new HashSet<SIBUuid8>(); // We'll build up this set through the logic below
      BaseDestinationHandler destinationHandler =
        (BaseDestinationHandler) _destinationManager.getDestinationInternal(destId, false);
  
      //TRM might pass in the UUID of a link here as it can't always tell the difference between links and destinations. 
      //Only process the UUID if is is not a link. 
      
      if (destinationHandler != null && !destinationHandler.isLink())
      {
        // Check if the localisation should be deleted
        Set localitySet = getDestinationLocalitySet(destinationHandler, capability);
  
        synchronized(destinationHandler)
        {
          // d526250 - If a remote destination is deleted then its ME stopped we might
          // get a trm notification in. Meanwhile, admin has told us to delete the dest
          // already. If we dont do the following we end up performing cleanup on a 
          // dest that no longer exists and we get nullpointers.
          if (!destinationHandler.isToBeDeleted())
          {
            // Part 1
            // We'll iterate over the set of transmission points for this destination
            // to build the list of localisations that we were sending to which are now unavailable
            Iterator<PtoPMessageItemStream> i = null;
            
              i = destinationHandler.getLocalisationManager().getXmitQueueIterator();    
            
            // Drive the iterator
            while(i.hasNext())
            {
              PtoPMessageItemStream ptoPMessageItemStream = (PtoPMessageItemStream)i.next();  
            
              // Get the localising ME's uuid
              SIBUuid8 meUuid = ptoPMessageItemStream.getLocalizingMEUuid();
              // Add this ME to the set of those that are unavailable
              unavailable.add(meUuid);
                
              if ((localitySet == null) || !localitySet.contains(meUuid.toString()))
              {
                // The localisation is not known in WCCM or WLM, so mark it for deletion
                cleanupDestination(ptoPMessageItemStream, 
                                   destinationHandler,
                                   meUuid,
                                   capability);
                  
              } // eof null localitySet or meUuid unknown by admin 
            } //eof while we have another XMIT itemstream to process 
            
            // Part 2
            // We now look through our list of MEs that we were receiving from (i.e. remoteget)
            // and add them to the list of unavailable destinations.
            Iterator<AnycastInputControl> it = destinationHandler.getAIControlAdapterIterator();
            while (it.hasNext())
              unavailable.add(it.next().getDMEUuid()); // note this could add MEs that we have previously already handled deletion for
            
            if (capability != Capability.GET)
            {
              // Drive reallocation
              destinationHandler.requestReallocation();
            }
          } // eof !isToBeDeleted
        } // eof synchronized on DestinationHandler
      } // eof destinationHandler not null
  
      //To preserve existing behaviour, if the destinationHandler is null we assume the destination is not a link.
      final boolean isNotLink = destinationHandler == null || (destinationHandler != null && !destinationHandler.isLink());
      
      if(isNotLink)
      {
         // Iterate over the registered MP listeners and alert them to the location change
         for (int i = 0; i < _destinationChangeListeners.size(); i++)
         {
           MPDestinationChangeListener listener = _destinationChangeListeners.get(i);
     
           // In this delegating call the available set should be empty, while the unavailable set will
           // comprise those ME uuids that we collected above.
           if (listener != null)
             listener.destinationLocationChange(destId, available, unavailable, capability);
         }
      }
  
      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
        SibTr.exit(tc, "destinationUnavailable");
  
      return;
    }