public static Map<Node, List<Node>> getNestedChildrenNodesMap(Document document, String mainContainerNodeName, String containerNodeName, String childNodeName) {
        Map<Node, List<Node>> toReturn = new HashMap<>();
        asStream(document.getElementsByTagName(mainContainerNodeName))
                .map(mainContainerNode -> getChildrenNodesMap(mainContainerNode, containerNodeName, childNodeName))
                .forEach(toReturn::putAll);
        return toReturn;
    }
@Test
    public void getNestedChildrenNodesMap() throws Exception {
        Document document = DOMParserUtil.getDocument(XML);
        Map<Node, List<Node>> retrieved = DOMParserUtil.getNestedChildrenNodesMap(document, MAIN_NODE, CHILD_NODE, TEST_NODE);
        assertThat(retrieved).isNotNull();
        assertThat(retrieved).hasSize(2);
        retrieved.forEach((childNode, testNodes) -> {
            assertThat(childNode.getNodeName()).isEqualTo(CHILD_NODE);
            assertThat(testNodes).hasSize(1);
            assertThat(testNodes.get(0).getNodeName()).isEqualTo(TEST_NODE);
        });
        retrieved = DOMParserUtil.getNestedChildrenNodesMap(document, CHILD_NODE, NESTING_NODE, NESTED_NODE);
        assertThat(retrieved).isNotNull();
        assertThat(retrieved).hasSize(2);
        retrieved.forEach((nestingNode, nestedNodes) -> {
        	assertThat(nestingNode.getNodeName()).isEqualTo(NESTING_NODE);
        	assertThat(nestedNodes).hasSize(1);
        	assertThat(nestedNodes.get(0).getNodeName()).isEqualTo(NESTED_NODE);
        });
    }