Collects all the plugins from `modules`.
        If modules is None, collects the plugins from the loaded modules.

        All plugins are passed through the module filters, if any are any,
        and returned as a list.

def collect_plugins(self, modules=None):
        """
        Collects all the plugins from `modules`.
        If modules is None, collects the plugins from the loaded modules.

        All plugins are passed through the module filters, if any are any,
        and returned as a list.
        """
        if modules is None:
            modules = self.get_loaded_modules()
        else:
            modules = util.return_list(modules)

        plugins = []
        for module in modules:
            module_plugins = [(item[1], item[0])
                              for item
                              in inspect.getmembers(module)
                              if item[1] and item[0] != '__builtins__']
            module_plugins, names = zip(*module_plugins)

            module_plugins = self._filter_modules(module_plugins, names)
            plugins.extend(module_plugins)
        return plugins