code: public static Node getGrandchildNode(Node parentNode, String childNodeName, String grandChildNodeName, String grandChildNodeValue){
                  List<Node> matchingChildren = getChildren(parentNode, childNodeName, null);
                  for(Node child : matchingChildren){
                          Node matchingGrandChild = getChildNode(child, grandChildNodeName, grandChildNodeValue);
                          if(matchingGrandChild != null){
                                  return matchingGrandChild;
                          }
                  }
                  return null;
          }
docs: Get the matching grand child node
  @param parentNode - the parent node
  @param childNodeName - name of child node to match
  @param grandChildNodeName - name of grand child node to match
  @param grandChildNodeValue - value of grand child node to match
  @return the grand child node if a match was found, null otherwise