def find_all_indexes(text, pattern, start =0):
    """Return a list of starting indexes of all occurrences of pattern in text,
    or an empty list if not found."""
    assert isinstance(text, str), 'text is not a string: {}'.format(text)
    assert isinstance(pattern, str), 'pattern is not a string: {}'.format(text)
    """Worst Running time: O(n * l) 
    where n is the number of indexes in text and l is the length of the pattern"""
    """Space complexity: O(n) where n is the length of text"""
    indexes = []
    text_index = 0 
    pattern_index = 0 
    starting_index = 0

    if pattern == '' :
        iterator = 0
        while iterator < len(text):
            indexes.append(iterator)
            iterator += 1
        return indexes

    for text_index in range(len(text)):
        starting_index = text_index

        while pattern[pattern_index]== text[text_index]:
            
            if len(pattern) - 1 == pattern_index:
                indexes.append(starting_index) 
                break

            pattern_index += 1
            text_index += 1

            if text_index == len(text):
                break

        pattern_index = 0
    return indexes