code: public static <T, R> Function<T, TimedResult<R>> of(
  		final Function<? super T, ? extends R> function,
  		final Clock clock
  	) {
  		return value -> {
  			final Timer timer = Timer.of(clock).start();
  			final R result = function.apply(value);
  			return new TimedResult<>(timer.stop().getTime(), result);
  		};
  	}
docs: Wraps the given function in a function which returns a
  {@code TimedResult}.
  
  @param function the function to wrap
  @param clock the clock used for measure the execution time
  @param <T> the functions parameter type
  @param <R> the functions return type
  @return the wrapped function which returns a {@code TimedResult}