docs: def partial_declaration_path(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.partial_declaration_path:
          result = [decl.partial_name]
          parent = decl.parent
          while parent:
              if parent.cache.partial_declaration_path:
                  result.reverse()
                  decl.cache.partial_declaration_path \
                      = parent.cache.partial_declaration_path + result
                  return decl.cache.partial_declaration_path
              else:
                  result.append(parent.partial_name)
                  parent = parent.parent
          result.reverse()
          decl.cache.partial_declaration_path = result
          return result
  
      return decl.cache.partial_declaration_path