docs: 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