def METHOD_NAME(self, METHOD_NAME, **kwdict):
    if METHOD_NAME not in self.provides:
        oslogger.debug('cannot not provide {}'.format(METHOD_NAME))
        return None
    ext = self.provides[METHOD_NAME]
    oslogger.debug('{} provides {}'.format(ext, METHOD_NAME))
    try:
        return ext.METHOD_NAME(METHOD_NAME, **kwdict)
    except Exception as e:
        self.notify(
            f'Extension {self.name} misbehaved on providing {METHOD_NAME} '
            f'(see debug window for stack trace)',
            category='warning')
        self.console.write(e)
        traceback.print_exc()
        oslogger.error(f'Extension {ulext.name} misbehaved on providing '
                       f'{METHOD_NAME}: {e}')