code: def execution_allowed(evaluator, node):
      """
      A decorator to detect recursions in statements. In a recursion a statement
      at the same place, in the same module may not be executed two times.
      """
      pushed_nodes = evaluator.recursion_detector.pushed_nodes
  
      if node in pushed_nodes:
          debug.warning(
              "catched stmt recursion: %s @%s",
              node,
              getattr(node, "start_pos", None),
          )
          yield False
      else:
          try:
              pushed_nodes.append(node)
              yield True
          finally:
              pushed_nodes.pop()
  
file_path: catboost/contrib/python/jedi/py2/jedi/evaluate/recursion.py
imports: from contextlib import contextmanager
  from jedi import debug
  from jedi.evaluate.base_context import NO_CONTEXTS
label_desc: Use image node_id 1 for calling a global function with example usage: execution_allowed(evaluator, node) without return types