def METHOD_NAME(decl):
    """
    Returns a list of parent declarations names without template arguments that
    have default value.
    Args:
        decl (declaration_t): declaration for which the partial declaration
                              path should be calculated.
    Returns:
        list[(str | basestring)]: list of names, where first item is the top
                                  parent name and last item the inputted
                                  declaration name.
    """
    # TODO:
    # If parent declaration cache already has declaration_path, reuse it for
    # calculation.
    if not decl:
        return []
    if not decl.cache.METHOD_NAME:
        result = [decl.partial_name]
        parent = decl.parent
        while parent:
            if parent.cache.METHOD_NAME:
                result.reverse()
                decl.cache.METHOD_NAME \
                    = parent.cache.METHOD_NAME + result
                return decl.cache.METHOD_NAME
            else:
                result.append(parent.partial_name)
                parent = parent.parent
        result.reverse()
        decl.cache.METHOD_NAME = result
        return result
    return decl.cache.METHOD_NAME