docs: @SuppressWarnings("unchecked")
      public boolean postValidateInfoTopic(final InfoTopic infoTopic, final ContentSpec contentSpec) {
          // Check if the app should be shutdown
          if (isShuttingDown.get()) {
              shutdown.set(true);
              return false;
          }
  
          boolean valid = true;
  
          // New Topics
          if (infoTopic.isTopicANewTopic()) {
              // Validate the tags
              if (!validateTopicTags(infoTopic, infoTopic.getTags(false))) {
                  valid = false;
              }
  
              // Check Assigned Writer exists
              if (!postValidateAssignedWriter(infoTopic)) {
                  valid = false;
              }
          }
          // Existing Topics
          else if (infoTopic.isTopicAnExistingTopic()) {
              // Calculate the revision for the topic
              final Integer revision;
              if (infoTopic.getRevision() == null && processingOptions.getMaxRevision() != null) {
                  revision = processingOptions.getMaxRevision();
              } else {
                  revision = infoTopic.getRevision();
              }
  
              // Check that the id actually exists
              BaseTopicWrapper<?> topic = null;
              try {
                  if (processingOptions.isTranslation()) {
                      topic = EntityUtilities.getTranslatedTopicByTopicId(factory, Integer.parseInt(infoTopic.getId()), revision,
                              processingOptions.getTranslationLocale() == null ? defaultLocale : processingOptions.getTranslationLocale());
                  } else {
                      topic = topicProvider.getTopic(Integer.parseInt(infoTopic.getId()), revision);
                  }
              } catch (NotFoundException e) {
                  log.debug("Could not find topic for id " + infoTopic.getDBId());
              }
  
              // Check that the topic actually exists
              if (topic == null) {
                  log.error(String.format(ProcessorConstants.ERROR_TOPIC_NONEXIST_MSG, infoTopic.getLineNumber(), infoTopic.getText()));
                  valid = false;
              } else {
                  infoTopic.setTopic(topic);
  
                  // Check to see if the topic contains the "Internal-Only" tag
                  if (serverEntities.getInternalOnlyTagId() != null && topic.hasTag(serverEntities.getInternalOnlyTagId())) {
                      log.warn(String.format(ProcessorConstants.WARN_INTERNAL_TOPIC_MSG, infoTopic.getLineNumber(), infoTopic.getText()));
                  }
  
                  if (!postValidateExistingTopic(infoTopic, topic, contentSpec)) {
                      valid = false;
                  }
              }
              // Cloned Topics
          } else if (infoTopic.isTopicAClonedTopic()) {
              // Get the original topic from the database
              int topicId = Integer.parseInt(infoTopic.getId().substring(1));
              TopicWrapper topic = null;
              try {
                  topic = topicProvider.getTopic(topicId, infoTopic.getRevision());
              } catch (NotFoundException e) {
                  log.debug("Could not find topic for id " + topicId);
              }
  
              // Check that the original topic was found
              if (topic == null) {
                  log.error(String.format(ProcessorConstants.ERROR_TOPIC_NONEXIST_MSG, infoTopic.getLineNumber(), infoTopic.getText()));
                  valid = false;
              } else {
                  if (!postValidateExistingTopic(infoTopic, topic, contentSpec)) {
                      valid = false;
                  }
  
                  // Check Assigned Writer exists
                  if (!postValidateAssignedWriter(infoTopic)) {
                      valid = false;
                  }
              }
          }
  
          return valid;
      }