code: def _copy_difference(self, left_rev: str, right_rev: str):
      left_fs = self.scm.get_fs(left_rev)
      right_fs = self.scm.get_fs(right_rev)
      paths = [
          path
          for path in left_fs.find("/")
          if not right_fs.exists(path)
      ]
      dest_paths = [
          localfs.join(self.scm.root_dir, left_fs.relpath(path, "/"))
          for path in paths
      ]
      for src, dest in zip(paths, dest_paths):
          with as_atomic(
              localfs, dest, create_parents=True
          ) as tmp_file:
              left_fs.get_file(src, tmp_file)
  
imports: import re
  from contextlib import contextmanager
  from typing import Dict, Iterable, Iterator, NamedTuple, Optional
  from scmrepo.git import Stash
  from dvc.exceptions import DvcException
  from dvc.log import logger
  from dvc_objects.fs.local import localfs
  from dvc_objects.fs.utils import as_atomic
  from .refs import APPLY_HEAD, APPLY_STASH
label_desc: Use image node_id 5 for calling the ApplyStash obj's underlying member method code with example usage: obj._copy_difference(left_rev, right_rev) without return types