code: public static <T> Spplr<T> reflectionSupplier(Object instance,
                                                    String methodName,
                                                    Class<T> primaryClass,
                                                    Class<T> secondaryClass) {
          try {
              return reflectionSupplier(instance, methodName, primaryClass);
          } catch (IllegalArgumentException e) {
              // Try the alternative return value.
              return reflectionSupplier(instance, methodName, secondaryClass);
          }
      }
docs: Similar to {@link #reflectionSupplier(Object, String, Class)}, except allows for an alternative return type.
  Will first try to create a reflection supplier using the primary class, but if that fails (the method doesn't
  return the primary class), will re-try with the secondary class.
  Useful for cases where the return type could be either a primitive or the primitive's boxed version
  (i.e. Integer.type or Integer.class).
  
  @param instance Instance to invoke the method one.
  @param methodName Method name to invoke. Method must be no-args and return a value of
  either the primary class or the secondary type.
  @param primaryClass Primary return type of the method. Will be tried first.
  @param secondaryClass Secondary return type of the method.
  Will be tried if the method doesn't return the primary type.
  @param <T> Supplier return type.
  @return A {@link Spplr} that will invoke the no-args method specified by the given name on the given instance.