public static List<Node> getNestedChildrenNodesList(Document document, String grandParentNodeName, String parentNodeName, String childNodeName) {
        return asStream(document.getElementsByTagName(childNodeName))
                .filter(childNode -> {
                    Node parentNode = childNode.getParentNode();
                    Node grandParentNode = parentNode.getParentNode();
                    return Objects.equals(parentNodeName, parentNode.getNodeName()) && Objects.equals(grandParentNodeName, grandParentNode.getNodeName());
                }).collect(Collectors.toList());
    }
@Test
    public void getNestedChildrenNodesList() throws Exception {
        Document document = DOMParserUtil.getDocument(XML);
        List<Node> retrieved = DOMParserUtil.getNestedChildrenNodesList(document, MAIN_NODE, CHILD_NODE, TEST_NODE);
        
        assertThat(retrieved).isNotNull();
        assertThat(retrieved).hasSize(2);

        retrieved.forEach(testNode -> assertThat(testNode.getNodeName()).isEqualTo(TEST_NODE));
        retrieved = DOMParserUtil.getNestedChildrenNodesList(document, CHILD_NODE, NESTING_NODE, NESTED_NODE);
        
        assertThat(retrieved).isNotNull().hasSize(2);
        retrieved.forEach(nestedNode -> assertThat(nestedNode.getNodeName()).isEqualTo(NESTED_NODE));
    }