docs: private List<List<ConceptId>> getComputePathResultList(Multimap<ConceptId, ConceptId> resultGraph, ConceptId fromID) {
          List<List<ConceptId>> allPaths = new ArrayList<>();
          List<ConceptId> firstPath = new ArrayList<>();
          firstPath.add(fromID);
  
          Deque<List<ConceptId>> queue = new ArrayDeque<>();
          queue.addLast(firstPath);
          while (!queue.isEmpty()) {
              List<ConceptId> currentPath = queue.pollFirst();
              if (resultGraph.containsKey(currentPath.get(currentPath.size() - 1))) {
                  Collection<ConceptId> successors = resultGraph.get(currentPath.get(currentPath.size() - 1));
                  Iterator<ConceptId> iterator = successors.iterator();
                  for (int i = 0; i < successors.size() - 1; i++) {
                      List<ConceptId> extendedPath = new ArrayList<>(currentPath);
                      extendedPath.add(iterator.next());
                      queue.addLast(extendedPath);
                  }
                  currentPath.add(iterator.next());
                  queue.addLast(currentPath);
              } else {
                  allPaths.add(currentPath);
              }
          }
          return allPaths;
      }