def doit(
            self, classes=None, recursive=True, indices=None, max_terms=None,
            **kwargs):
        """Write out the indexed sum explicitly

        If `classes` is None or :class:`IndexedSum` is in `classes`,
        (partially) write out the indexed sum in to an explicit sum of terms.
        If `recursive` is True, write out each of the new sum's summands by
        calling its :meth:`doit` method.

        Args:
            classes (None or list): see :meth:`.Expression.doit`
            recursive (bool): see :meth:`.Expression.doit`
            indices (list): List of :class:`IdxSym` indices for which the sum
                should be expanded. If `indices` is a subset of the indices
                over which the sum runs, it will be partially expanded. If not
                given, expand the sum completely
            max_terms (int): Number of terms after which to truncate the sum.
                This is particularly useful for infinite sums. If not given,
                expand all terms of the sum. Cannot be combined with `indices`
            kwargs: keyword arguments for recursive calls to
                :meth:`doit`. See :meth:`.Expression.doit`
        """
        return super().doit(
            classes, recursive, indices=indices, max_terms=max_terms, **kwargs)