@property<EOL><INDENT>def text(self):<DEDENT>
for descendant in self.contents:<EOL><INDENT>if isinstance(descendant, TokenWithPosition):<EOL><INDENT>yield descendant<EOL><DEDENT>elif hasattr(descendant, '<STR_LIT:text>'):<EOL><INDENT>yield from descendant.text<EOL><DEDENT><DEDENT>
r"""All text in descendant nodes.

        This is equivalent to contents, keeping text elements and excluding
        Tex expressions.

        >>> from TexSoup import TexSoup
        >>> soup = TexSoup(r'''
        ... \begin{itemize}
        ...     \begin{itemize}
        ...         \item Nested
        ...     \end{itemize}
        ... \end{itemize}''')
        >>> next(soup.text)
        'Nested\n    '