code: def get_predecessors(self, cfgnode, excluding_fakeret=True, jumpkind=None):
          
  
          if excluding_fakeret and jumpkind == 'Ijk_FakeRet':
              return [ ]
  
          if not excluding_fakeret and jumpkind is None:
              # fast path
              if cfgnode in self.graph:
                  return list(self.graph.predecessors(cfgnode))
              return [ ]
  
          predecessors = []
          for pred, _, data in self.graph.in_edges([cfgnode], data=True):
              jk = data['jumpkind']
              if jumpkind is not None:
                  if jk == jumpkind:
                      predecessors.append(pred)
              elif excluding_fakeret:
                  if jk != 'Ijk_FakeRet':
                      predecessors.append(pred)
              else:
                  predecessors.append(pred)
          return predecessors
docs: Get predecessors of a node in the control flow graph.
  
          :param CFGNode cfgnode:             The node.
          :param bool excluding_fakeret:      True if you want to exclude all predecessors that is connected to the node
                                              with a fakeret edge.
          :param str or None jumpkind:        Only return predecessors with the specified jumpkind. This argument will be
                                              ignored if set to None.
          :return:                            A list of predecessors
          :rtype:                             list