import typing


def _split_message(string: str) -> typing.Tuple[typing.List[str], typing.List[str]]:
    """
    Split up a string into words and words_eol

    Args:
        string: Any string.

    Returns:
        (list of str, list of str):
            A 2-tuple of (words, words_eol), where words is a list of the words of *string*,
            seperated by whitespace, and words_eol is a list of the same length, with each element
            including the word and everything up to the end of *string*

    Example:
        >>> _split_message("pink fluffy unicorns")
        (['pink', 'fluffy', 'unicorns'], ['pink fluffy unicorns', 'fluffy unicorns', 'unicorns'])
    """
    # get the words
    words = string.split()

    # reconstruct the original phrase EOL style, through clever usage of slice
    words_eol = [" ".join(words[i:]) for i, _ in enumerate(words)]

    return words, words_eol