'Returns an AnnotatedCFG based on slicing result.'

def annotated_cfg(self, start_point=None):

    targets = []
    for (simrun, stmt_idx) in self._targets:
        targets.append((simrun.addr, stmt_idx))
    l.debug('Initializing    AnnoCFG...')
    anno_cfg = AnnotatedCFG(self.project, self._cfg)
    for (simrun, stmt_idx) in self._targets:
        if (stmt_idx is not (-1)):
            anno_cfg.set_last_statement(simrun.addr, stmt_idx)
    for n in self._cfg.graph.nodes():
        run = n
        if (run.addr in self.chosen_statements):
            if (self.chosen_statements[run.addr] is True):
                anno_cfg.add_block_to_whitelist(run.addr)
            else:
                anno_cfg.add_statements_to_whitelist(run.addr, self.chosen_statements[run.addr])
    for (src, dst) in self._cfg.graph.edges():
        run = src
        if ((dst.addr in self.chosen_statements) and (src.addr in self.chosen_statements)):
            anno_cfg.add_exit_to_whitelist(run.addr, dst.addr)
    return anno_cfg
