docs: public boolean findTopicId(final File absolutePathToFile, final String id) {
  
          if (!absolutePathToFile.exists()) {
              return false;
          }
          try {
              //load the file
              final DocumentBuilder builder = XMLUtils.getDocumentBuilder();
              builder.setEntityResolver(CatalogUtils.getCatalogResolver());
              final Document root = builder.parse(new InputSource(new FileInputStream(absolutePathToFile)));
  
              //get root element
              final Element doc = root.getDocumentElement();
              //do BFS
              final Queue<Element> queue = new LinkedList<>();
              queue.offer(doc);
              while (!queue.isEmpty()) {
                  final Element pe = queue.poll();
                  final NodeList pchildrenList = pe.getChildNodes();
                  for (int i = 0; i < pchildrenList.getLength(); i++) {
                      final Node node = pchildrenList.item(i);
                      if (node.getNodeType() == Node.ELEMENT_NODE) {
                          queue.offer((Element)node);
                      }
                  }
                  final String classValue = pe.getAttribute(ATTRIBUTE_NAME_CLASS);
                  if (classValue != null && TOPIC_TOPIC.matches(classValue)) {
                      //topic id found
                      if (pe.getAttribute(ATTRIBUTE_NAME_ID).equals(id)) {
                          return true;
                      }
                  }
              }
              return false;
          } catch (final RuntimeException e) {
              throw e;
          } catch (final Exception e) {
              logger.error("Failed to read document: " + e.getMessage(), e);
          }
          return false;
      }