'Callback routine that takes in a path, and returns all feasible successors to path group. This callback routine
should be passed to the keyword argument "successor_func" of PathGroup.step().
:param path: A Path instance.
:return: A list of all feasible Path successors.'

def successor_func(self, path):

    whitelist = self.get_whitelisted_statements(path.addr)
    last_stmt = self.get_last_statement_index(path.addr)
    successors = path.step(stmt_whitelist=whitelist, last_stmt=None)
    taken_successors = []
    for suc in successors:
        try:
            taken = self.should_take_exit(path.addr, suc.addr)
        except AngrExitError:
            l.debug('Got    an    unknown    exit    that    AnnotatedCFG    does    not    know    about:    %#x    ->    %#x', path.addr, suc.addr)
            continue
        if taken:
            taken_successors.append(suc)
    return taken_successors
