docs: def save(self, destination, overwrite=False, chunk_size=2**16):
          ''' Save file to disk or copy its content to an open file(-like) object.
              If *destination* is a directory, :attr:`filename` is added to the
              path. Existing files are not overwritten by default (IOError).
  
              :param destination: File path, directory or file(-like) object.
              :param overwrite: If True, replace existing files. (default: False)
              :param chunk_size: Bytes to read at a time. (default: 64kb)
          '''
          if isinstance(destination, basestring): # Except file-likes here
              if os.path.isdir(destination):
                  destination = os.path.join(destination, self.filename)
              if not overwrite and os.path.exists(destination):
                  raise IOError('File exists.')
              with open(destination, 'wb') as fp:
                  self._copy_file(fp, chunk_size)
          else:
              self._copy_file(destination, chunk_size)