code: def iter_extensions(extension):
      
      for _, ext in inspect.getmembers(extension, is_extension):
          for item in iter_extensions(ext):
              yield item
          yield ext
docs: Depth-first iterator over sub-extensions on `extension`.