docs: def ffill(self, dim, limit=None):
          '''Fill NaN values by propogating values forward
  
          *Requires bottleneck.*
  
          Parameters
          ----------
          dim : str
              Specifies the dimension along which to propagate values when
              filling.
          limit : int, default None
              The maximum number of consecutive NaN values to forward fill. In
              other words, if there is a gap with more than this number of
              consecutive NaNs, it will only be partially filled. Must be greater
              than 0 or None for no limit.
  
          Returns
          -------
          Dataset
          '''
          from .missing import ffill, _apply_over_vars_with_dim
  
          new = _apply_over_vars_with_dim(ffill, self, dim=dim, limit=limit)
          return new