code: private Function<? super Method, AbilityExtension> returnExtension(Object obj) {
      return method -> {
        try {
          return (AbilityExtension) method.invoke(obj);
        } catch (IllegalAccessException | InvocationTargetException e) {
          BotLogger.error("Could not add ability extension", TAG, e);
          throw propagate(e);
        }
      };
    }
docs: Invokes the method and retrieves its return {@link Reply}.
  
  @param obj an bot or extension that this method is invoked with
  @return a {@link Function} which returns the {@link Reply} returned by the given method