code: def get_calling_nodes(self):
      from jedi.evaluate.dynamic import DynamicExecutedParams
  
      old_arguments_list = []
      arguments = self
  
      while arguments not in old_arguments_list:
          if not isinstance(arguments, TreeArguments):
              break
  
          old_arguments_list.append(arguments)
          for name, default, star_count in reversed(
              list(arguments.as_tree_tuple_objects())
          ):
              if not star_count or not isinstance(name, tree.Name):
                  continue
  
              names = self._evaluator.goto(arguments.context, name)
              if len(names) != 1:
                  break
              if not isinstance(names[0], ParamName):
                  break
              param = names[0].get_param()
              if isinstance(param, DynamicExecutedParams):
                  # For dynamic searches we don't even want to see errors.
                  return []
              if not isinstance(param, ExecutedParam):
                  break
              if param.var_args is None:
                  break
              arguments = param.var_args
              break
  
      if arguments.argument_node is not None:
          return [arguments.argument_node]
      if arguments.trailer is not None:
          return [arguments.trailer]
      return []
  
imports: import re
  from parso.python import tree
  from jedi._compatibility import zip_longest
  from jedi import debug
  from jedi.evaluate import analysis
  from jedi.evaluate.lazy_context import LazyKnownContext, LazyKnownContexts, LazyTreeContext, get_merged_lazy_context
  from jedi.evaluate.filters import ParamName
  from jedi.evaluate.base_context import NO_CONTEXTS
  from jedi.evaluate.context import iterable
  from jedi.evaluate.param import get_executed_params, ExecutedParam
label_desc: Use image node_id 6 for calling the TreeArguments obj's underlying member method code with example usage: obj.get_calling_nodes() and returns: list, list, list, list