docs: def _getitem_with_mask(self, key, fill_value=dtypes.NA):
          """Index this Variable with -1 remapped to fill_value."""
          # TODO(shoyer): expose this method in public API somewhere (isel?) and
          # use it for reindex.
          # TODO(shoyer): add a sanity check that all other integers are
          # non-negative
          # TODO(shoyer): add an optimization, remapping -1 to an adjacent value
          # that is actually indexed rather than mapping it to the last value
          # along each axis.
  
          if fill_value is dtypes.NA:
              fill_value = dtypes.get_fill_value(self.dtype)
  
          dims, indexer, new_order = self._broadcast_indexes(key)
  
          if self.size:
              if isinstance(self._data, dask_array_type):
                  # dask's indexing is faster this way; also vindex does not
                  # support negative indices yet:
                  # https://github.com/dask/dask/pull/2967
                  actual_indexer = indexing.posify_mask_indexer(indexer)
              else:
                  actual_indexer = indexer
  
              data = as_indexable(self._data)[actual_indexer]
              chunks_hint = getattr(data, 'chunks', None)
              mask = indexing.create_mask(indexer, self.shape, chunks_hint)
              data = duck_array_ops.where(mask, fill_value, data)
          else:
              # array cannot be indexed along dimensions of size 0, so just
              # build the mask directly instead.
              mask = indexing.create_mask(indexer, self.shape)
              data = np.broadcast_to(fill_value, getattr(mask, 'shape', ()))
  
          if new_order:
              data = np.moveaxis(data, range(len(new_order)), new_order)
          return self._finalize_indexing_result(dims, data)