code: private void createNodePaths() {
      TreeTraverser<OWLClassContainer> traverser =
          new TreeTraverser<OWLClassContainer>() {
            @Override
            public Iterable<OWLClassContainer> children(OWLClassContainer container) {
              int count = 0;
              List<OWLClassContainer> containers = new ArrayList<>();
              for (OWLClass childClass : loader.getChildClass(container.getOwlClass())) {
                containers.add(
                    new OWLClassContainer(
                        childClass, constructNodePath(container.getNodePath(), count), false));
                count++;
              }
              return containers;
            }
          };
  
      OWLClass pseudoRootClass = loader.createClass(PSEUDO_ROOT_CLASS_LABEL, loader.getRootClasses());
  
      for (OWLClassContainer container :
          traverser.preOrderTraversal(
              new OWLClassContainer(pseudoRootClass, PSEUDO_ROOT_CLASS_NODEPATH, true))) {
        OWLClass ontologyTerm = container.getOwlClass();
        String ontologyTermNodePath = container.getNodePath();
        String ontologyTermIRI = ontologyTerm.getIRI().toString();
        OntologyTermNodePath nodePathEntity = createNodePathEntity(container, ontologyTermNodePath);
        nodePathsPerOntologyTerm.put(ontologyTermIRI, nodePathEntity);
      }
    }
docs: Creates {@link OntologyTermNodePathMetadata} {@link Entity}s for an entire ontology tree and
  writes them to the {@link #nodePathsPerOntologyTerm} {@link Multimap}.