docs: @SneakyThrows
      public static <T, R> Function<T, R> doIf(final Predicate<Object> condition, final Supplier<R> trueFunction,
                                               final Supplier<R> falseFunction) {
          return t -> {
              try {
                  if (condition.test(t)) {
                      return trueFunction.get();
                  }
                  return falseFunction.get();
              } catch (final Throwable e) {
                  LOGGER.warn(e.getMessage(), e);
                  return falseFunction.get();
              }
          };
      }