<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _create_cfgnode(self, sim_successors, call_stack, func_addr, block_id=None, depth=None, exception_info=None):
 """ Create a context-sensitive CFGNode instance for a specific block. :param SimSuccessors sim_successors: The SimSuccessors object. :param CallStack call_stack_suffix: The call stack. :param int func_addr: Address of the current function. :param BlockID block_id: The block ID of this CFGNode. :param int or None depth: Depth of this CFGNode. :return: A CFGNode instance. :rtype: CFGNode """


        sa = sim_successors.artifacts  # shorthand

        # Determine if this is a SimProcedure, and further, if this is a syscall
        syscall = None
        is_syscall = False
        if sim_successors.sort == 'SimProcedure':
            is_simprocedure = True
            if sa['is_syscall'] is True:
                is_syscall = True
                syscall = sim_successors.artifacts['procedure']
        else:
            is_simprocedure = False

        if is_simprocedure:
            simproc_name = sa['name'].split('.')[-1]
            if simproc_name == "ReturnUnconstrained" and sa['resolves'] is not None:
                simproc_name = sa['resolves']

            no_ret = False
            if syscall is not None and sa['no_ret']:
                no_ret = True

            cfg_node = CFGENode(sim_successors.addr,
                                None,
                                self.model,
                                callstack_key=call_stack.stack_suffix(self.context_sensitivity_level),
                                input_state=None,
                                simprocedure_name=simproc_name,
                                syscall_name=syscall,
                                no_ret=no_ret,
                                is_syscall=is_syscall,
                                function_address=sim_successors.addr,
                                block_id=block_id,
                                depth=depth,
                                creation_failure_info=exception_info,
                                thumb=(isinstance(self.project.arch, ArchARM) and sim_successors.addr & 1),
                                )

        else:
            cfg_node = CFGENode(sim_successors.addr,
                                sa['irsb_size'],
                                self.model,
                                callstack_key=call_stack.stack_suffix(self.context_sensitivity_level),
                                input_state=None,
                                is_syscall=is_syscall,
                                function_address=func_addr,
                                block_id=block_id,
                                depth=depth,
                                irsb=sim_successors.artifacts['irsb'],
                                creation_failure_info=exception_info,
                                thumb=(isinstance(self.project.arch, ArchARM) and sim_successors.addr & 1),
                                )

        return cfg_node