docs: private SIDestinationAddress[] getDestinationAddresses(
                                                             DestinationNamePattern destinationNamePattern,
                                                             DestinationType destinationType,
                                                             DestinationAvailability destinationAvailability)
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(tc,
                          "getDestinationAddresses",
                          new Object[] { destinationNamePattern, destinationType, destinationAvailability });
  
          BaseDestinationHandler destinationHandler = null;
          SIDestinationAddress[] destinationAddresses = null;
  
          DestinationTypeFilter filter = new DestinationTypeFilter();
          filter.LOCAL = Boolean.TRUE;
          filter.FOREIGN_DESTINATION = Boolean.FALSE;
          filter.ALIAS = Boolean.FALSE;
          filter.QUEUE = Boolean.TRUE; //Any destination type apart from topicspace is treated as a queue
          filter.VISIBLE = Boolean.TRUE;
  
          SIMPIterator iterator = destinationIndex.iterator(filter);
          int i = 0;
          List<String> addresses = new Vector<String>();
  
          while (iterator.hasNext())
          {
              destinationHandler = (BaseDestinationHandler) iterator.next();
              if (isAvailable(destinationHandler, destinationAvailability) && (!(destinationHandler.isSystem())))
              {
                  // Check that the destination is the type that we want
                  if (destinationHandler.getDestinationType() == destinationType)
                  {
                      String destinationName = destinationHandler.getName();
  
                      // Check whether the user has specified a pattern to match against.
                      if (destinationNamePattern == null || destinationNamePattern.match(destinationName))
                      {
                          // Add this destination to the Address list.
                          addresses.add(i, destinationName);
                          i++;
                      }
                  }
              }
          }
  
          destinationAddresses = new SIDestinationAddress[addresses.size()];
          for (int cursor = 0; cursor < addresses.size(); cursor++)
          {
              // Create the new SIDestinationAddress
              destinationAddresses[cursor] =
                              ((SIDestinationAddressFactory) MessageProcessor.getSingletonInstance(
                                              SIMPConstants.SI_DESTINATION_ADDRESS_FACTORY)).createSIDestinationAddress(
                                                                                                                        addresses.get(cursor),
                                                                                                                        true);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(tc, "getDestinationAddresses", new Object[] { destinationAddresses });
          return destinationAddresses;
      }