def METHOD_NAME(self, token):
    """
    Apply the Legality Principle in combination with
    Onset Maximization to return a list of syllables.
    :param token: Single word or token
    :type token: str
    :return syllable_list: Single word or token broken up into syllables.
    :rtype: list(str)
    """
    syllables = []
    syllable, current_onset = "", ""
    vowel, onset = False, False
    for char in token[::-1]:
        char_lower = char.lower()
        if not vowel:
            syllable += char
            vowel = bool(char_lower in self.vowels)
        else:
            if char_lower + current_onset[::-1] in self.legal_onsets:
                syllable += char
                current_onset += char_lower
                onset = True
            elif char_lower in self.vowels and not onset:
                syllable += char
                current_onset += char_lower
            else:
                syllables.append(syllable)
                syllable = char
                current_onset = ""
                vowel = bool(char_lower in self.vowels)
    syllables.append(syllable)
    syllables_ordered = [syllable[::-1] for syllable in syllables][::-1]
    return syllables_ordered