code: def _iter_class_hierarchy(self, include_self=True, reverse=True):
          
          supers = self.__class__.__mro__[(0 if include_self else 1):]
          for bundle in (supers if not reverse else reversed(supers)):
              if issubclass(bundle, Bundle) and bundle not in {AppBundle, Bundle}:
                  if bundle == self.__class__:
                      yield self
                  else:
                      yield bundle()
docs: Iterate over the bundle classes in the hierarchy. Yields base-most
          super classes first (aka opposite of Method Resolution Order).
  
          For internal use only.
  
          :param include_self: Whether or not to yield the top-level bundle.
          :param reverse: Pass False to yield bundles in Method Resolution Order.