code: def _run(self, evaluator_id, function, args, kwargs):
      if evaluator_id is None:
          return function(*args, **kwargs)
      elif function is None:
          del self._evaluators[evaluator_id]
      else:
          evaluator = self._get_evaluator(function, evaluator_id)
  
          # Exchange all handles
          args = list(args)
          for i, arg in enumerate(args):
              if isinstance(arg, AccessHandle):
                  args[
                      i
                  ] = evaluator.compiled_subprocess.get_access_handle(
                      arg.id
                  )
          for key, value in kwargs.items():
              if isinstance(value, AccessHandle):
                  kwargs[
                      key
                  ] = evaluator.compiled_subprocess.get_access_handle(
                      value.id
                  )
  
          return function(evaluator, *args, **kwargs)
  
imports: import os
  import sys
  import subprocess
  import socket
  import errno
  import weakref
  import traceback
  from functools import partial
  from threading import Thread
  from jedi._compatibility import queue, is_py3, force_unicode, pickle_dump, pickle_load, GeneralizedPopen, print_to_stderr
  from jedi import debug
  from jedi.cache import memoize_method
  from jedi.evaluate.compiled.subprocess import functions
  from jedi.evaluate.compiled.access import DirectObjectAccess, AccessPath, SignatureParam
  from jedi.api.exceptions import InternalError
label_desc: Use image node_id 3 for calling the Listener obj's underlying member method code with example usage: obj._run(evaluator_id, function, args, kwargs) and returns: function, function