docs: protected void pullTranslations(final ContentSpec contentSpec, final String locale) throws BuildProcessingException {
          final CollectionWrapper<TranslatedContentSpecWrapper> translatedContentSpecs = providerFactory.getProvider(
                  TranslatedContentSpecProvider.class).getTranslatedContentSpecsWithQuery("query;" +
                  CommonFilterConstants.ZANATA_IDS_FILTER_VAR + "=CS" + contentSpec.getId() + "-" + contentSpec.getRevision());
  
          // Ensure that the passed content spec has a translation
          if (translatedContentSpecs == null || translatedContentSpecs.isEmpty()) {
              throw new BuildProcessingException(
                      "Unable to find any translations for Content Spec " + contentSpec.getId() + (contentSpec.getRevision() == null ? "" :
                              (", Revision " + contentSpec.getRevision())));
          }
  
          final TranslatedContentSpecWrapper translatedContentSpec = translatedContentSpecs.getItems().get(0);
          if (translatedContentSpec.getTranslatedNodes() != null) {
              final Map<String, String> translations = new HashMap<String, String>();
  
              // Iterate over each translated node and build up the list of translated strings for the content spec.
              final List<TranslatedCSNodeWrapper> translatedCSNodes = translatedContentSpec.getTranslatedNodes().getItems();
              for (final TranslatedCSNodeWrapper translatedCSNode : translatedCSNodes) {
                  // Only process nodes that have content pushed to Zanata
                  if (!isNullOrEmpty(translatedCSNode.getOriginalString())) {
                      if (translatedCSNode.getTranslatedStrings() != null) {
                          final List<TranslatedCSNodeStringWrapper> translatedCSNodeStrings = translatedCSNode.getTranslatedStrings()
                                  .getItems();
                          for (final TranslatedCSNodeStringWrapper translatedCSNodeString : translatedCSNodeStrings) {
                              if (translatedCSNodeString.getLocale().getValue().equals(locale)) {
                                  translations.put(translatedCSNode.getOriginalString(), translatedCSNodeString.getTranslatedString());
                              }
                          }
                      }
                  }
              }
  
              // Resolve any entities to make sure that the source string match
              final List<Entity> entities = XMLUtilities.parseEntitiesFromString(contentSpec.getEntities());
              TranslationUtilities.resolveCustomContentSpecEntities(entities, translatedContentSpec.getContentSpec());
  
              // Replace all the translated strings
              TranslationUtilities.replaceTranslatedStrings(translatedContentSpec.getContentSpec(), contentSpec, translations);
  
              // Set the Unique Ids so that they can be used later
              setTranslationUniqueIds(contentSpec, translatedContentSpec);
          }
      }