def NavigateState(self, graph_root: AnyNode, node: AnyNode):
        """
        This function sets the state of a node depending on its (position in the) corresponding tree (-> DAG review as Tree)
            :param graph_root:AnyNode: tree root
            :param node:AnyNode: node from tree you want to update
        """
        try:
            if isNotNone(node.label) and isNone(node.content):
                label = node.label
                regex = str('\\b' + label + '\\b')
                desired = []

                tmp_desired = findall(graph_root,
                                      lambda node: node.label in label)

                for i in tmp_desired:
                    match = re.findall(regex, i.label)
                    if len(match) > 0:
                        desired.append(i)

                if (len(desired) < 1): print(node.state)
                elif (len(desired) == 1): self.NormalState(node)
                else:
                    node.followerNodes = desired[0].followerNodes
                    node.hasFollowerNodes = desired[0].hasFollowerNodes
                    node.hasInputNode = desired[0].hasInputNode
                    node.state = 'navigator'
                    node.name = 'navigator_' + str(node.id)
            else:
                self.NormalState(node)
        except Exception as ex:
            template = "An exception of type {0} occurred in [TParser.NavigateState]. Arguments:\n{1!r}"
            message = template.format(type(ex).__name__, ex.args)
            print(message)
 def NormalState(self, node: AnyNode):
     """
     This function sets the state of a node in the GraphTree.
         :param node:AnyNode: a node
     """
     try:
         if (node.is_leaf) and not (node.is_root):
             node.state = 'destination'
             node.name = 'destination_' + str(node.id)
         elif (node.is_root):
             node.state = 'root'
             node.name = 'root_' + str(node.id)
             node.parent = None
         else:
             node.state = 'subnode'
             node.name = 'subnode_' + str(node.id)
     except Exception as ex:
         template = "An exception of type {0} occurred in [TParser.NormalState]. Arguments:\n{1!r}"
         message = template.format(type(ex).__name__, ex.args)
         print(message)