code: @SuppressWarnings("unchecked")
      public static <T> T invoke(Method method, Object self, Object... args) {
          try {
              return (T) method.invoke(self, args);
          } catch (IllegalAccessException | InvocationTargetException e) {
              throw ShedException.wrap(e, ShedErrorCode.UNABLE_TO_INVOKE_METHOD)
                      .put("method", method.toGenericString());
          }
      }
docs: Invokes the specified method while wrapping checked exception in a {@link ShedException}.
  
  @param method the method.
  @param self   the instance to invoke the method on.
  @param args   the method arguments.
  @param <T>    the type of the return value.
  @return the method returned value.