code: def _download_and_untar_artifact(self, local_path):
      tar_filename: str = util.get_temp_filename()
      self.logger.debug("tar_filename = %s", tar_filename)
  
      # Now download our artifact from studio.storage and untar it:
      try:
          result: bool = self.storage_handler.download_file(
              self.key, tar_filename
          )
          if not result:
              msg: str = "FAILED to download {0}.".format(self.key)
              self.logger.info(msg)
              return None
      except BaseException as exc:
          util.check_for_kb_interrupt()
          msg: str = "FAILED to download {0}: {1}.".format(
              self.key, exc
          )
          self.logger.info(msg)
          return None
  
      if os.path.exists(tar_filename):
          untar_artifact(local_path, tar_filename, self.logger)
          os.remove(tar_filename)
          self.local_path = local_path
          return local_path
      self.logger.info("file %s download failed", tar_filename)
      return None
  
imports: import hashlib
  import os
  import re
  import tarfile
  from typing import Dict
  from studio.artifacts import artifacts_tracker
  from studio.util import util, logs
  from studio.credentials import credentials
  from studio.storage import storage_setup
  from studio.storage.storage_type import StorageType
  from studio.storage.storage_handler import StorageHandler
  from studio.storage.storage_handler_factory import StorageHandlerFactory
  from studio.storage.storage_util import tar_artifact, untar_artifact
label_desc: Use image node_id 6 for calling the Artifact obj's underlying member method code with example usage: obj._download_and_untar_artifact(local_path) and returns: None, local_path, None, None