def METHOD_NAME(self, node, dupcandidate, starting_child):
    ## Process all children
    isdone = donenode.get((starting_child, dupcandidate), None)
    if isdone != None:
        # print("found {0} {1}".format(starting_child,dupcandidate))
        return False
    else:
        # print("adding {0} {1}".format(starting_child,dupcandidate))
        donenode[(starting_child, dupcandidate)] = True
    nodeEdges = myDependTree[node]
    # print(nodeEdges)
    if dupcandidate not in nodeEdges:  # Nothing to do
        print("-")
        return False
    elif len(nodeEdges) == 0:  ## leaf node
        print("l")
        return False
    else:
        for currEdge in nodeEdges:
            if dupcandidate in myDependTree[currEdge]:
                print(
                    "Remove {} from {}:  found hereditary same include in {}".format(
                        dupcandidate, starting_child, currEdge
                    )
                )
                ## Update Mapping to remove race condition where an include is removed
                ## after it is referenced as a hereditary source
                # print("{0} --> {1}".format(starting_child,myDependTree[starting_child]))
                temp = myDependTree[starting_child]
                temp.remove(dupcandidate)
                myDependTree[node] = temp
                # print("{0} --> {1}".format(starting_child,myDependTree[starting_child]))
                self.comment_out(starting_child, dupcandidate)
                return True
            else:
                # print("Processsng proc_childeren({0},{1},{2})".format(currEdge,dupcandidate,starting_child))
                self.METHOD_NAME(currEdge, dupcandidate, starting_child)
    return False