docs: protected boolean processTopicTags(final TagProvider tagProvider, final ITopicNode specTopic, final TopicWrapper topic) {
          LOG.debug("Processing topic tags");
          boolean changed = false;
  
          // Get the tags for the topic
          final List<String> addTagNames = specTopic.getTags(true);
          final List<TagWrapper> addTags = new ArrayList<TagWrapper>();
          for (final String addTagName : addTagNames) {
              final TagWrapper tag = tagProvider.getTagByName(addTagName);
              if (tag != null) {
                  addTags.add(tag);
              }
          }
  
          // Check if the app should be shutdown
          if (isShuttingDown.get()) {
              return changed;
          }
  
          // Process the tags depending on the topic type
          if (specTopic.isTopicAClonedTopic()) {
              if (processClonedTopicTags(tagProvider, specTopic, topic, addTags)) changed = true;
          } else if (specTopic.isTopicAnExistingTopic() && specTopic.getRevision() == null) {
              if (processExistingTopicTags(tagProvider, topic, addTags)) changed = true;
          } else if (specTopic.isTopicANewTopic()) {
              if (processNewTopicTags(tagProvider, topic, addTags)) changed = true;
          }
  
          return changed;
      }