def flat_list(x=None):
    """
    Description:
    It returns a list that contains all the elements form the input list of lists.
    It should work for any number of levels.

    Example:
        >>> x = flat_list([1, 'k', [], 3, [4, 5, 6], [[7, 8]], [[[9]]]])
        >>> x
        >>> [1, 'k', 3, 4, 5, 6, 7, 8, 9]

    Args:
        - x (list): List of lists of objects.

    Raises:
        - TypeError: If the input is not a list object.
    """

    # Check for empty input.
    if x is None:
        return []
    # _end_if_

    # Input 'x' should be a list.
    if not isinstance(x, list):
        raise TypeError(" Input should be a list.")
    # _end_if_

    # Define the return list.
    flat_x = []

    # Go through all the list elements.
    for item_x in x:
        # Check for embedded lists.
        if isinstance(item_x, list):
            # Check for empty entries.
            if not item_x:
                continue
            # _end_if_

            # Note the recursive call in "flat_list".
            for ix in flat_list(item_x):
                flat_x.append(ix)
            # _end_for_
        else:
            # If the item is not a list.
            flat_x.append(item_x)
        # _end_if_
    # _end_for_

    # Return the flatten list.
    return flat_x