@staticmethod
def _convert_indirect_jump_targets_to_states(job, indirect_jump_targets):
    """
        Convert each concrete indirect jump target into a SimState. If there are non-zero successors and the original
        jumpkind is a call, we also generate a fake-ret successor.

        :param job:                     The CFGJob instance.
        :param indirect_jump_targets:   A collection of concrete jump targets resolved from a indirect jump.
        :return:                        A list of SimStates.
        :rtype:                         list
        """
    first_successor = job.sim_successors.all_successors[0]
    successors = []
    for t in indirect_jump_targets:
        a = first_successor.copy()
        a.ip = t
        successors.append(a)
    if successors and first_successor.history.jumpkind == 'Ijk_Call':
        a = first_successor.copy()
        a.ip = job.cfg_node.addr + job.cfg_node.size
        a.history.jumpkind = 'Ijk_FakeRet'
        successors.append(a)
    return successors
