def METHOD_NAME(self, node):
    """
    Occasionally the edeprels automatically derived from the Slovak basic
    trees do not match the whitelist. For example, the noun is an
    abbreviation and its morphological case is unknown.
    """
    for edep in node.deps:
        m = re.match(r'^(obl(?::arg)?|nmod|advcl|acl):', edep['deprel'])
        if m:
            bdeprel = m.group(1)
            solved = False
            for x in self.unambiguous:
                # All secondary prepositions have only one fixed morphological case
                # they appear with, so we can replace whatever case we encounter with the correct one.
                m = re.match(r'^(obl(?::arg)?|nmod|advcl|acl):'+x+r'(?::(?:nom|gen|dat|acc|voc|loc|ins))?$', edep['deprel'])
                if m:
                    edep['deprel'] = m.group(1)+':'+self.unambiguous[x]
                    solved = True
                    break
            # The following prepositions have more than one morphological case
            # available. Thanks to the Case feature on prepositions, we can
            # identify the correct one.
            if not solved:
                m = re.match(r'^(obl(?::arg)?|nmod):(medzi|na|o|po|pred|v|za)(?::(?:nom|gen|dat|voc))?$', edep['deprel'])
                if m:
                    # The following is only partial solution. We will not see
                    # some children because they may be shared children of coordination.
                    prepchildren = [x for x in node.children if x.lemma == m.group(2)]
                    if len(prepchildren) > 0 and prepchildren[0].feats['Case'] != '':
                        edep['deprel'] = m.group(1)+':'+m.group(2)+':'+prepchildren[0].feats['Case'].lower()
                        solved = True
            # If we failed to identify the case of the preposition in the
            # preceding steps, pick a default. It applies mostly to 'o'
            # with wrongly split time values.
            if not solved:
                m = re.match(r'^(obl(?::arg)?|nmod):o$', edep['deprel'])
                if m:
                    edep['deprel'] = m.group(1)+':o:acc'
                    solved = True
                m = re.match(r'^(obl(?::arg)?|nmod):(po|v)$', edep['deprel'])
                if m:
                    edep['deprel'] = m.group(1)+':'+m.group(2)+':loc'
                    solved = True
            # Some cases do not occur with nominal modifiers without preposition.
            # If we see them, chances are that it is the same-case modifier,
            # and the same case just happens to be the one we see. For vocatives,
            # it is also possible that they have been confused with nominatives.
            if not solved:
                m = re.match(r'^(obl(?::arg)?|nmod):(voc|loc)$', edep['deprel'])
                if m:
                    edep['deprel'] = m.group(1)
                    solved = True
            # Annotation and conversion errors.
            if not solved:
                # Povedal som jej „na zdorovie“.
                if edep['deprel'] == 'obl:arg:na' and node.form == 'zdorovie':
                    self.set_basic_and_enhanced(node, edep['parent'], 'ccomp', 'ccomp')
                    solved = True