docs: def measureSize(self, diff, chunkSize):
          """ Spend some time to get an accurate size. """
          self._fileSystemSync()
  
          sendContext = self.butter.send(
              self.getSendPath(diff.toVol),
              self.getSendPath(diff.fromVol),
              diff,
              showProgress=self.showProgress is not False,
              allowDryRun=False,
          )
  
          class _Measure(io.RawIOBase):
  
              def __init__(self, estimatedSize, showProgress):
                  self.totalSize = None
                  self.progress = progress.DisplayProgress(estimatedSize) if showProgress else None
  
              def __enter__(self):
                  self.totalSize = 0
                  if self.progress:
                      self.progress.__enter__()
                  return self
  
              def __exit__(self, exceptionType, exceptionValue, traceback):
                  if self.progress:
                      self.progress.__exit__(exceptionType, exceptionValue, traceback)
                  return False  # Don't supress exception
  
              def writable(self):
                  return True
  
              def write(self, bytes):
                  self.totalSize += len(bytes)
                  if self.progress:
                      self.progress.update(self.totalSize)
  
          logger.info("Measuring %s", diff)
  
          measure = _Measure(diff.size, self.showProgress is not False)
          Store.transfer(sendContext, measure, chunkSize)
  
          diff.setSize(measure.totalSize, False)
  
          for path in self.getPaths(diff.toVol):
              path = self._fullPath(path) + Store.theInfoExtension
  
              with open(path, "a") as infoFile:
                  diff.toVol.writeInfoLine(infoFile, diff.fromUUID, measure.totalSize)