code: def move_to(self, destination_filename: str,
                  alter_if_clash: bool = True) -> None:
          
          if not self.src_filename:
              return
          if alter_if_clash:
              counter = 0
              while os.path.exists(destination_filename):
                  root, ext = os.path.splitext(destination_filename)
                  destination_filename = "{r}_{c}{e}".format(
                      r=root, c=counter, e=ext)
                  counter += 1
              # ... for example, "/a/b/c.txt" becomes "/a/b/c_0.txt", then
              # "/a/b/c_1.txt", and so on.
          else:
              if os.path.exists(destination_filename):
                  src = self.rescue_filename or self.src_filename
                  log.warning("Destination exists; won't move {!r} to {!r}",
                              src, destination_filename)
                  return
          if self.rescue_filename:
              shutil.move(self.rescue_filename, destination_filename)
              os.remove(self.src_filename)
              log.info("Moved recovered file {!r} to {!r} and deleted corrupted "
                       "original {!r}",
                       self.rescue_filename,
                       destination_filename,
                       self.src_filename)
              self.rescue_filename = ""
          else:
              shutil.move(self.src_filename, destination_filename)
              log.info("Moved {!r} to {!r}", self.src_filename,
                       destination_filename)
          self.src_filename = ""
docs: Move the file to which this class refers to a new location.
          The function will not overwrite existing files (but offers the option
          to rename files slightly to avoid a clash).
  
          Args:
              destination_filename: filename to move to
              alter_if_clash: if ``True`` (the default), appends numbers to
                  the filename if the destination already exists, so that the
                  move can proceed.