from typing import Iterable


def listify_nested_iterables(iterable):
    """Recursively convert iterables to lists.

    Recursively exhaust iterables into lists. Careful if you have iterables you
    do not want to accidentally listify. We only handle strings.

    Args:
        iterable (iterable): An iterable whose elements may be other iterables.

    Returns:
        list: A list whose elements

    Examples:
        >>> iterable = iter(["a", "b", "c"])
        >>> listify_nested_iterables(iterable)
        ['a', 'b', 'c']

        >>> iterable = iter(["abc", iter(["def", "ghi"])])
        >>> listify_nested_iterables(iterable)
        ['abc', ['def', 'ghi']]
    """
    nested_list = list(iterable)
    for i, item in enumerate(nested_list):
        # If item is iterable but not a string
        if isinstance(item, Iterable) and not isinstance(item, str):
            nested_list[i] = listify_nested_iterables(item)

    return nested_list