(self, node: CFGNode, excluding_fakeret: bool=True)
return predecessors
Get a list of tuples where the first element is the predecessor of the CFG node and the second element is the
        jumpkind of the predecessor.

        :param node:                The node.
        :param excluding_fakeret:   True if you want to exclude all predecessors that are fall-through predecessors.
        :return:                    A list of predecessors and their corresponding jumpkinds.
Get a list of tuples where the first element is the predecessor of the CFG node and the second element is the
        jumpkind of the predecessor.
Get a list of tuples where the first element is the predecessor of the CFG node and the second element is the jumpkind of the predecessor .
def get_predecessors_and_jumpkinds(self, node: CFGNode, excluding_fakeret: bool=True) -> List[Tuple[CFGNode,str]]:
        """
        Get a list of tuples where the first element is the predecessor of the CFG node and the second element is the
        jumpkind of the predecessor.

        :param node:                The node.
        :param excluding_fakeret:   True if you want to exclude all predecessors that are fall-through predecessors.
        :return:                    A list of predecessors and their corresponding jumpkinds.
        """

        predecessors = []
        for pred, _, data in self.graph.in_edges([node], data=True):
            if not excluding_fakeret or data['jumpkind'] != 'Ijk_FakeRet':
                predecessors.append((pred, data['jumpkind']))
        return predecessors
def get_predecessors_and_jumpkinds ( self , node : CFGNode , excluding_fakeret : bool = True ) -> List [ Tuple [ CFGNode , str ] ] : predecessors = [ ] for pred , _ , data in self . graph . in_edges ( [ node ] , data = True ) : if not excluding_fakeret or data [ 'jumpkind' ] != 'Ijk_FakeRet' : predecessors . append ( ( pred , data [ 'jumpkind' ] ) ) return predecessors