code: def mmap_move(fileobj, dest, src, count):
      
  
      assert mmap is not None, "no mmap support"
  
      if dest < 0 or src < 0 or count < 0:
          raise ValueError("Invalid parameters")
  
      try:
          fileno = fileobj.fileno()
      except (AttributeError, IOError):
          raise mmap.error(
              "File object does not expose/support a file descriptor")
  
      fileobj.seek(0, 2)
      filesize = fileobj.tell()
      length = max(dest, src) + count
  
      if length > filesize:
          raise ValueError("Not in file size boundary")
  
      offset = ((min(dest, src) // mmap.ALLOCATIONGRANULARITY) *
                mmap.ALLOCATIONGRANULARITY)
      assert dest >= offset
      assert src >= offset
      assert offset % mmap.ALLOCATIONGRANULARITY == 0
  
      # Windows doesn't handle empty mappings, add a fast path here instead
      if count == 0:
          return
  
      # fast path
      if src == dest:
          return
  
      fileobj.flush()
      file_map = mmap.mmap(fileno, length - offset, offset=offset)
      try:
          file_map.move(dest - offset, src - offset, count)
      finally:
          file_map.close()
docs: Mmaps the file object if possible and moves 'count' data
      from 'src' to 'dest'. All data has to be inside the file size
      (enlarging the file through this function isn't possible)
  
      Will adjust the file offset.
  
      Args:
          fileobj (fileobj)
          dest (int): The destination offset
          src (int): The source offset
          count (int) The amount of data to move
      Raises:
          mmap.error: In case move failed
          IOError: In case an operation on the fileobj fails
          ValueError: In case invalid parameters were given