docs: def get_undecorated_callback(self):
          ''' Return the callback. If the callback is a decorated function, try to
              recover the original function. '''
          func = self.callback
          func = getattr(func, '__func__' if py3k else 'im_func', func)
          closure_attr = '__closure__' if py3k else 'func_closure'
          while hasattr(func, closure_attr) and getattr(func, closure_attr):
              func = getattr(func, closure_attr)[0].cell_contents
          return func