code: def get_executable_nodes(node, last_added=False):
      """
      For static analysis.
      """
      result = []
      typ = node.type
      if typ == "name":
          next_leaf = node.get_next_leaf()
          if (
              last_added is False
              and node.parent.type != "param"
              and next_leaf != "="
          ):
              result.append(node)
      elif typ == "expr_stmt":
          # I think evaluating the statement (and possibly returned arrays),
          # should be enough for static analysis.
          result.append(node)
          for child in node.children:
              result += get_executable_nodes(child, last_added=True)
      elif typ == "decorator":
          # decorator
          if node.children[-2] == ")":
              node = node.children[-3]
              if node != "(":
                  result += get_executable_nodes(node)
      else:
          try:
              children = node.children
          except AttributeError:
              pass
          else:
              if node.type in _EXECUTE_NODES and not last_added:
                  result.append(node)
  
              for child in children:
                  result += get_executable_nodes(child, last_added)
  
      return result
  
file_path: catboost/contrib/python/jedi/py3/jedi/parser_utils.py
imports: import re
  import textwrap
  from inspect import cleandoc
  from parso.python import tree
  from parso.cache import parser_cache
  from jedi._compatibility import literal_eval, force_unicode
label_desc: Use image node_id 1 for calling a global function with example usage: get_executable_nodes(node, last_added) and returns: result