code: def unload_extension(self, name):
          
  
          lib = self.__extensions.get(name)
          if lib is None:
              raise errors.ExtensionNotLoaded(name)
  
          self._remove_module_references(lib.__name__)
          self._call_module_finalizers(lib, name)
docs: Unloads an extension.
  
          When the extension is unloaded, all commands, listeners, and cogs are
          removed from the bot and the module is un-imported.
  
          The extension can provide an optional global function, ``teardown``,
          to do miscellaneous clean-up if necessary. This function takes a single
          parameter, the ``bot``, similar to ``setup`` from
          :meth:`~.Bot.load_extension`.
  
          Parameters
          ------------
          name: :class:`str`
              The extension name to unload. It must be dot separated like
              regular Python imports if accessing a sub-module. e.g.
              ``foo.test`` if you want to import ``foo/test.py``.
  
          Raises
          -------
          ExtensionNotLoaded
              The extension was not loaded.