code: def save_dataset(self, dataset, filename=None, fill_value=None,
                       compute=True, **kwargs):
          
          raise NotImplementedError(
              "Writer '%s' has not implemented dataset saving" % (self.name, ))
docs: Saves the ``dataset`` to a given ``filename``.
  
          This method must be overloaded by the subclass.
  
          Args:
              dataset (xarray.DataArray): Dataset to save using this writer.
              filename (str): Optionally specify the filename to save this
                              dataset to. If not provided then `filename`
                              which can be provided to the init method will be
                              used and formatted by dataset attributes.
              fill_value (int or float): Replace invalid values in the dataset
                                         with this fill value if applicable to
                                         this writer.
              compute (bool): If `True` (default), compute and save the dataset.
                              If `False` return either a `dask.delayed.Delayed`
                              object or tuple of (source, target). See the
                              return values below for more information.
              **kwargs: Other keyword arguments for this particular writer.
  
          Returns:
              Value returned depends on `compute`. If `compute` is `True` then
              the return value is the result of computing a
              `dask.delayed.Delayed` object or running `dask.array.store`. If
              `compute` is `False` then the returned value is either a
              `dask.delayed.Delayed` object that can be computed using
              `delayed.compute()` or a tuple of (source, target) that should be
              passed to `dask.array.store`. If target is provided the the caller
              is responsible for calling `target.close()` if the target has
              this method.