'Generate CodeNodes for target and source, if no source node add node
for function, otherwise creates fake return to in function manager
:param int addr: target address
:param angr.analyses.CFGNode src_node: source node
:param int function_addr: address of function
:param confirmed: used as attribute on eventual digraph
:return: None'

def _function_add_fakeret_edge(self, addr, src_node, function_addr, confirmed=None):

    try:
        target = self._to_snippet(self._nodes[addr])
    except KeyError:
        target = addr
    if (src_node is None):
        self.kb.functions._add_node(function_addr, target)
    else:
        src_node = self._to_snippet(src_node)
        self.kb.functions._add_fakeret_to(function_addr, src_node, target, confirmed=confirmed)
