docs: def make_flatten(decl_or_decls):
      """
      Converts tree representation of declarations to flatten one.
  
      :param decl_or_decls: reference to list of declaration's or single
          declaration
      :type decl_or_decls: :class:`declaration_t` or [ :class:`declaration_t` ]
      :rtype: [ all internal declarations ]
  
      """
  
      def proceed_single(decl):
          answer = [decl]
          if not isinstance(decl, scopedef_t):
              return answer
          for elem in decl.declarations:
              if isinstance(elem, scopedef_t):
                  answer.extend(proceed_single(elem))
              else:
                  answer.append(elem)
          return answer
  
      decls = []
      if isinstance(decl_or_decls, list):
          decls.extend(decl_or_decls)
      else:
          decls.append(decl_or_decls)
      answer = []
      for decl in decls:
          answer.extend(proceed_single(decl))
      return answer