def METHOD_NAME(self, token: Token) -> List[str]:
    univ_pos = token.pos_
    string = unponc(token.text)
    if univ_pos not in ["PROPN", "ADP", "ADJ", "NOUN", "VERB"]:
        return [string.lower()]
    demutated = demutate(string)
    secondary = ""
    if string[0:1].lower() == "h" and string[1:2].lower() in "aáeéiíoóuú":
        secondary = string[1:]
    lookup_pos = univ_pos.lower()
    if univ_pos == "PROPN":
        lookup_pos = "noun"
    if token.has_morph():
        # TODO: lookup is actually required for the genitive forms, but
        # this is not in BuNaMo, and would not be of use with IDT.
        if univ_pos == "NOUN" and (
            "VerbForm=Vnoun" in token.morph or "VerbForm=Inf" in token.morph
        ):
            hpref = "Form=HPref" in token.morph
            return [demutate(string, hpref).lower()]
        elif univ_pos == "ADJ" and "VerbForm=Part" in token.morph:
            return [demutate(string).lower()]
    lookup_table = self.lookups.get_table("lemma_lookup_" + lookup_pos, {})
    def to_list(value):
        if value is None:
            value = []
        elif not isinstance(value, list):
            value = [value]
        return value
    if univ_pos == "ADP":
        return to_list(lookup_table.get(string, string.lower()))
    ret = []
    if univ_pos == "PROPN":
        ret.extend(to_list(lookup_table.get(demutated)))
        ret.extend(to_list(lookup_table.get(secondary)))
    else:
        ret.extend(to_list(lookup_table.get(demutated.lower())))
        ret.extend(to_list(lookup_table.get(secondary.lower())))
    if len(ret) == 0:
        ret = [string.lower()]
    return ret