docs: public static TranslatedTopicWrapper getTranslatedTopicByTopicAndNodeId(final DataProviderFactory providerFactory, final Integer id,
              final Integer rev, final Integer translatedCSNodeId, final String locale) {
          if (locale == null) return null;
          final CollectionWrapper<TranslatedTopicWrapper> translatedTopics = providerFactory.getProvider(
                  TopicProvider.class).getTopicTranslations(id, rev);
  
          if (translatedTopics != null) {
              final List<TranslatedTopicWrapper> translatedTopicItems = translatedTopics.getItems();
              for (final TranslatedTopicWrapper translatedTopic : translatedTopicItems) {
                  // Make sure the locale and topic revision matches
                  if (translatedTopic.getLocale().getValue().equals(locale) && translatedTopic.getTopicRevision().equals(rev)) {
                      // Make sure the translated cs node id matches
                      if ((translatedCSNodeId == null && translatedTopic.getTranslatedCSNode() == null) || (translatedTopic
                              .getTranslatedCSNode() != null && translatedTopic.getTranslatedCSNode().getId().equals(
                              translatedCSNodeId))) {
                          return translatedTopic;
                      }
                  }
              }
          }
  
          return null;
      }