public void dumpAllEdges(ClientLogger logger) {
        for (Map.Entry<NodeType, List<NodeType>> entry : parentsOfNode.entrySet()) {
            NodeType node = entry.getKey();
            logger.info(node.toString() + " inherits from:");
            for (NodeType parent : entry.getValue()) {
                logger.info("    " + parent.toString());
            }
        }

        for (NodeType parentURI : childrenOfNode.keySet()) {
            logger.info(parentURI.toString() + " has children:");
            for (NodeType childURI : getValidChildren(parentURI)) {
                logger.info("    " + childURI.toString());
            }
        }
    }
Recursive search downwards through the inheritance graph to 
retrieve all who directly or indirectly inherits the given node
integration/schema-language-server/language-server/src/main/java/ai/vespa/schemals/index/InheritanceGraph.java