def measure_old_norse_syllable(syllable: list) -> Union[Length, None]:
    """
    Old Norse syllables are considered as:
    - short if
    - long if
    - overlong if

    >>> measure_old_norse_syllable([m, a.lengthen(), l]).name
    'long'

    >>> measure_old_norse_syllable([a, l]).name
    'short'

    >>> measure_old_norse_syllable([s, t, ee, r, k, r]).name
    'long'

    >>> measure_old_norse_syllable([m, o.lengthen()]).name
    'long'

    :param syllable: list of Vowel and Consonant instances
    :return: instance of Length (short, long or overlong)
    """
    index = 0
    while index < len(syllable) and not isinstance(syllable[index], Vowel):
        index += 1
    if index == len(syllable):
        return None
    else:
        long_vowel_number = 0
        short_vowel_number = 0
        geminated_consonant_number = 0
        simple_consonant_number = 0
        for c in syllable[index:]:
            if isinstance(c, Vowel):
                if c.length == Length.long:
                    long_vowel_number += 1
                elif c.length == Length.short:
                    short_vowel_number += 1
            elif isinstance(c, Consonant):
                if c.geminate:
                    geminated_consonant_number += 1
                else:
                    simple_consonant_number += 1
        if long_vowel_number == 0 and short_vowel_number == 1 and simple_consonant_number <= 1 and\
                geminated_consonant_number == 0:
            return Length.short
        elif (short_vowel_number == 1 and (simple_consonant_number > 1 or geminated_consonant_number > 0)) or \
                long_vowel_number > 0 and simple_consonant_number <= 1 and geminated_consonant_number == 0:
            return Length.long
        elif long_vowel_number > 0 and (simple_consonant_number > 1 or geminated_consonant_number > 0):
            return Length.overlong
def measure_old_norse_syllable ( syllable : list ) -> Union [ Length , None ] : index = 0 while index < len ( syllable ) and not isinstance ( syllable [ index ] , Vowel ) : index += 1 if index == len ( syllable ) : return None else : long_vowel_number = 0 short_vowel_number = 0 geminated_consonant_number = 0 simple_consonant_number = 0 for c in syllable [ index : ] : if isinstance ( c , Vowel ) : if c . length == Length . long : long_vowel_number += 1 elif c . length == Length . short : short_vowel_number += 1 elif isinstance ( c , Consonant ) : if c . geminate : geminated_consonant_number += 1 else : simple_consonant_number += 1 if long_vowel_number == 0 and short_vowel_number == 1 and simple_consonant_number <= 1 and geminated_consonant_number == 0 : return Length . short elif ( short_vowel_number == 1 and ( simple_consonant_number > 1 or geminated_consonant_number > 0 ) ) or long_vowel_number > 0 and simple_consonant_number <= 1 and geminated_consonant_number == 0 : return Length . long elif long_vowel_number > 0 and ( simple_consonant_number > 1 or geminated_consonant_number > 0 ) : return Length . overlong
Old Norse syllables are considered as:
    - short if
    - long if
    - overlong if

    >>> measure_old_norse_syllable([m, a.lengthen(), l]).name
    'long'

    >>> measure_old_norse_syllable([a, l]).name
    'short'

    >>> measure_old_norse_syllable([s, t, ee, r, k, r]).name
    'long'

    >>> measure_old_norse_syllable([m, o.lengthen()]).name
    'long'

    :param syllable: list of Vowel and Consonant instances
    :return: instance of Length (short, long or overlong)