docs: private void populateDestinations(Map<String, Object> properties,
                                        HashMap<String, BaseDestination> destinationList, HashMap<String, SIBLocalizationPoint> destinationLocalizationList,
                                        String meName, String destinationType, ConfigurationAdmin configAdmin,
                                        boolean modified) {
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              SibTr.entry(tc, "populateDestinations", new Object[] { properties,
                                                                    destinationList, destinationLocalizationList, meName, destinationType, configAdmin });
          }
          String[] destinations = (String[]) properties.get(destinationType);
          // flag indicating if user have provided default queue or topic.
          // If user have overridden then we need to consider that instead of
          // using defaults
          boolean defaultQueueTopicProvided = false;
          // flag indicating if user have provided the _SYSTEM.Exception.Destination
          boolean exceptionDestinationProvided = false;
  
          if (destinations != null) {
  
              for (String destinationPid : destinations) {
                  pids.add(destinationPid);
                  Configuration config = null;
                  try {
                      config = configAdmin.getConfiguration(destinationPid, bundleLocation);
                  } catch (IOException e) {
                      SibTr.exception(tc, e);
                      FFDCFilter.processException(e, this.getClass().getName(), "369", this);
                  }
                  Dictionary destinationProperties = config.getProperties();
                  SIBDestination destination = new SIBDestinationImpl();
                  SIBLocalizationPoint destinationLocalization = new SIBLocalizationPointImpl();
  
                  if (destinationProperties != null) {
                      if (destinationProperties.get(JsAdminConstants.ID) != null
                          && !destinationProperties.get(JsAdminConstants.ID).toString().trim()
                                          .isEmpty()) {
                          if (TraceComponent.isAnyTracingEnabled()
                              && tc.isEntryEnabled()) {
                              SibTr.debug(this, tc, "Destination ID :  "
                                                    + destinationProperties.get(JsAdminConstants.ID));
                          }
  
                          String destinationName = (String) destinationProperties.get(JsAdminConstants.ID);
  
                          // we hit this scenario when use have given same id for <queue> and <topic>
                          // tags.We always consider queue first while constructing the destinations.
                          // Hence we ignore the destinaiton
                          if (destinationList.containsKey(destinationName)) {
                              SibTr.warning(tc, "SAME_DEST_ID_SIAS0123", new Object[] { destinationName });
                              continue;
                          }
  
                          // set the name of the queue.Here ID is considered as the name
                          destination.setName(destinationName);
                          // set the destiantion type as Queue
                          if (destinationType.equals(JsAdminConstants.QUEUE)) {
                              destination.setDestinationType(DestinationType.QUEUE);
  
                              if (destinationProperties.get(JsAdminConstants.ID).equals(JsAdminConstants.DEFAULTQUEUE))
                                  defaultQueueTopicProvided = true;
                              if (destinationProperties.get(JsAdminConstants.ID).equals(JsAdminConstants.EXCEPTION_DESTINATION))
                                  exceptionDestinationProvided = true;
                          } else { //TOPICSPACE
                              destination
                                              .setDestinationType(DestinationType.TOPICSPACE);
  
                              if (destinationProperties.get(JsAdminConstants.ID).equals(JsAdminConstants.DEFAULTTOPIC))
                                  defaultQueueTopicProvided = true;
                          }
                          //here local is true and alias is false as we are negotiating the destination 
                          //of type Queue or Topic and not Alias or Foreign 
                          destination.setLocal(true);
                          destination.setAlias(false);
  
                          // The max and default have been replaced with forceReliability in the config
                          // overrideOfQOSByProducerAllowed is removed from config but we have to pass 
                          // to admin hence it is set as true by default in SIBDestinationImpl
                          String forceReliability = (String) destinationProperties
                                          .get(JsAdminConstants.FORCERELIABILITY);
                          String defaultReliability = forceReliability;
                          String maxReliability = forceReliability;
  
                          //set the defaultReliability and maxReliability
                          //if defaultReliability > maxReliability then consider the defaults for both
                          //During modified if the condition is not satisfied, the old values are retained
                          destination.setDefaultAndMaxReliability(defaultReliability, maxReliability, jsMEConfig, modified);
  
                          //Set the exception destination
                          String exceptionDest = (String) destinationProperties
                                          .get(JsAdminConstants.EXCEPTIONDESTINATION);
                          if (exceptionDest.trim().isEmpty())
                              destination.setExceptionDestination(JsAdminConstants.EXCEPTION_DESTINATION);
                          else
                              destination.setExceptionDestination(exceptionDest);
                          String failedDeliveryPolicy = (String) destinationProperties.get(JsAdminConstants.FAILEDDELIVERYPOLICY);
                          Long redeliveryInterval = (Long) destinationProperties
                                          .get(JsAdminConstants.REDELIVERYINTERVAL);
                          if (redeliveryInterval < 1) {
                              redeliveryInterval = JsAdminConstants.DEFAULT_REDELIVERYINTERVAL_VALUE;
                          }
                          destination.setBlockedRetryTimeout(redeliveryInterval);
  
                          if (failedDeliveryPolicy.equals(JsAdminConstants.KEEP_TRYING)) {
                              destination.setFailedDeliveryPolicy(failedDeliveryPolicy);
                              destination.setExceptionDestination(null);
                          } else if (failedDeliveryPolicy.equals(JsAdminConstants.DISCARD)) {
                              destination.setExceptionDestination(null);
                              // Exception Discard Reliability is the property which makes the messages (having 
                              // reliability level less than whatever specified) get discarded after trying
                              // for a maximum number of attempts as specified in maxRedelivery count
                              // Setting it to ASSUREDPERSISTENT, makes sure that all the messages will get discarded
                              // once it reaches the maxRedelivery Count
                              destination.setExceptionDiscardReliability(JsAdminConstants.ASSUREDPERSISTENT);
                          }
                          Integer maxRedeliveryCount = (Integer) destinationProperties
                                          .get(JsAdminConstants.MAXREDELIVERYCOUNT);
                          destination
                                          .setMaxFailedDeliveries(maxRedeliveryCount);
  
                          destination.setSendAllowed((Boolean) destinationProperties
                                          .get(JsAdminConstants.SENDALLOWED));
                          destination
                                          .setReceiveAllowed((Boolean) destinationProperties
                                                          .get(JsAdminConstants.RECEIVEALLOWED));
  
                          // in liberty release the maintainstrictorder and receiveexclusive are 
                          // having the same value.This is because to get strict order 
                          // it is required to have a single consumer consuming the message
                          Boolean maintainStrictOrder = (Boolean) destinationProperties
                                          .get(JsAdminConstants.MAINTAINSTRICTORDER);
                          destination
                                          .setMaintainStrictOrder(maintainStrictOrder);
                          destination
                                          .setReceiveExclusive(maintainStrictOrder);
  
                          Long maxQueueDepth = (Long) destinationProperties
                                          .get(JsAdminConstants.MAXMESSAGEDEPTH);
                          destination.setHighMessageThreshold(maxQueueDepth);
  
                      } else {
                          SibTr.error(tc, "NO_ID_PROVIDED_SIAS0102", new Object[] {
                                      destinationType });
                          continue;
  
                      }
                      // destination localization identifier is always in the format "destinationname@mename"
                      destinationLocalization.setIdentifier(destination.getName() + "@" + meName);
                      destinationLocalization.setSendAllowed(destination.isSendAllowed());
                      destinationLocalization.setHighMsgThreshold(destination.getHighMessageThreshold());
  
                      destinationList.put(destination.getName(), destination);
                      destinationLocalizationList.put(destination.getName() + "@" + meName, destinationLocalization);
  
                  } else {
  
                      if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
                          SibTr.debug(this, tc, "destinationProperties is null");
                      }
                  }
  
              }// end of for loop
          } else {
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
                  SibTr.debug(this, tc, "No " + destinationType
                                        + "defined in server.xml");
              }
          }
  
          //create the default exception destiantion
          if (destinationType.equals(JsAdminConstants.QUEUE) && !exceptionDestinationProvided) {
              if (!modified) {
                  SIBDestination exceptionDest = new SIBDestinationImpl(JsAdminConstants.EXCEPTION_DESTINATION, DestinationType.QUEUE);
                  exceptionDest.setExceptionDestination(null);//set the exceptiondestination to empty as it itself is the exceptiondestiantion
  
                  SIBLocalizationPoint exceptionDestLocalization = new SIBLocalizationPointImpl();
  
                  exceptionDestLocalization.setIdentifier(exceptionDest.getName() + "@" + meName);
                  exceptionDestLocalization.setSendAllowed(exceptionDest.isSendAllowed());
                  exceptionDestLocalization.setHighMsgThreshold(exceptionDest.getHighMessageThreshold());
  
                  destinationList.put(exceptionDest.getName(), exceptionDest);
                  destinationLocalizationList.put(exceptionDest.getName() + "@" + meName, exceptionDestLocalization);
              }
  
          }
  
          // create defaults if not provided - during activate()
          // if during modified the defaultQueue or defaultTopic is deleted, we
          // should not create the new defaults as the old has to be retained
          if (destinationType.equals(JsAdminConstants.QUEUE) && !defaultQueueTopicProvided) {
              if (!modified) {
                  SIBDestination defaultQueue = new SIBDestinationImpl(JsAdminConstants.DEFAULTQUEUE, DestinationType.QUEUE);
                  SIBLocalizationPoint defaultQueueLocalization = new SIBLocalizationPointImpl();
  
                  defaultQueueLocalization.setIdentifier(defaultQueue.getName() + "@" + meName);
                  defaultQueueLocalization.setSendAllowed(defaultQueue.isSendAllowed());
                  defaultQueueLocalization.setHighMsgThreshold(defaultQueue.getHighMessageThreshold());
  
                  destinationList.put(defaultQueue.getName(), defaultQueue);
                  destinationLocalizationList.put(defaultQueue.getName() + "@" + meName, defaultQueueLocalization);
              }
  
          } else if (destinationType.equals(JsAdminConstants.TOPICSPACE) && !defaultQueueTopicProvided) {
              if (!modified) {
                  SIBDestination defaultTopic = new SIBDestinationImpl(
                                  JsAdminConstants.DEFAULTTOPIC, DestinationType.TOPICSPACE);
                  SIBLocalizationPoint defaultTopicLocalization = new SIBLocalizationPointImpl();
  
                  defaultTopicLocalization.setIdentifier(defaultTopic.getName() + "@" + meName);
                  defaultTopicLocalization.setSendAllowed(defaultTopic.isSendAllowed());
                  defaultTopicLocalization.setHighMsgThreshold(defaultTopic.getHighMessageThreshold());
  
                  destinationList.put(defaultTopic.getName(), defaultTopic);
                  destinationLocalizationList.put(defaultTopic.getName() + "@" + meName, defaultTopicLocalization);
              }
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) {
              SibTr.exit(tc, "populateDestiantions", new Object[] { destinationList });
          }
  
      }