docs: def expand_dims(self, dim=None, axis=None, **dim_kwargs):
          """Return a new object with an additional axis (or axes) inserted at
          the corresponding position in the array shape.
  
          If dim is already a scalar coordinate, it will be promoted to a 1D
          coordinate consisting of a single value.
  
          Parameters
          ----------
          dim : str, sequence of str, dict, or None
              Dimensions to include on the new variable.
              If provided as str or sequence of str, then dimensions are inserted
              with length 1. If provided as a dict, then the keys are the new
              dimensions and the values are either integers (giving the length of
              the new dimensions) or sequence/ndarray (giving the coordinates of
              the new dimensions). **WARNING** for python 3.5, if ``dim`` is
              dict-like, then it must be an ``OrderedDict``. This is to ensure
              that the order in which the dims are given is maintained.
          axis : integer, list (or tuple) of integers, or None
              Axis position(s) where new axis is to be inserted (position(s) on
              the result array). If a list (or tuple) of integers is passed,
              multiple axes are inserted. In this case, dim arguments should be
              same length list. If axis=None is passed, all the axes will be
              inserted to the start of the result array.
          **dim_kwargs : int or sequence/ndarray
              The keywords are arbitrary dimensions being inserted and the values
              are either the lengths of the new dims (if int is given), or their
              coordinates. Note, this is an alternative to passing a dict to the
              dim kwarg and will only be used if dim is None. **WARNING** for
              python 3.5 ``dim_kwargs`` is not available.
  
          Returns
          -------
          expanded : same type as caller
              This object, but with an additional dimension(s).
          """
          if isinstance(dim, int):
              raise TypeError('dim should be str or sequence of strs or dict')
          elif isinstance(dim, str):
              dim = OrderedDict(((dim, 1),))
          elif isinstance(dim, (list, tuple)):
              if len(dim) != len(set(dim)):
                  raise ValueError('dims should not contain duplicate values.')
              dim = OrderedDict(((d, 1) for d in dim))
  
          # TODO: get rid of the below code block when python 3.5 is no longer
          #   supported.
          python36_plus = sys.version_info[0] == 3 and sys.version_info[1] > 5
          not_ordereddict = dim is not None and not isinstance(dim, OrderedDict)
          if not python36_plus and not_ordereddict:
              raise TypeError("dim must be an OrderedDict for python <3.6")
          elif not python36_plus and dim_kwargs:
              raise ValueError("dim_kwargs isn't available for python <3.6")
          dim_kwargs = OrderedDict(dim_kwargs)
  
          dim = either_dict_or_kwargs(dim, dim_kwargs, 'expand_dims')
          ds = self._to_temp_dataset().expand_dims(dim, axis)
          return self._from_temp_dataset(ds)