code: def _process_exited(self, returncode):
      assert returncode is not None, returncode
      assert self._returncode is None, self._returncode
      if self._loop.get_debug():
          logger.info("%r exited with return code %r", self, returncode)
      self._returncode = returncode
      if self._proc.returncode is None:
          # asyncio uses a child watcher: copy the status into the Popen
          # object. On Python 3.6, it is required to avoid a ResourceWarning.
          self._proc.returncode = returncode
      self._call(self._protocol.process_exited)
  
      self._try_finish()
  
imports: import collections
  import subprocess
  import warnings
  from .None import protocols
  from .None import transports
  from .log import logger
label_desc: Use image node_id 19 for calling the BaseSubprocessTransport obj's underlying member method code with example usage: obj._process_exited(returncode) without return types