docs: public static <T> com.simiacryptus.util.lang.TimedResult<T> time(@javax.annotation.Nonnull final UncheckedSupplier<T> fn) {
      long priorGcMs = ManagementFactory.getGarbageCollectorMXBeans().stream().mapToLong(x -> x.getCollectionTime()).sum();
      final long start = System.nanoTime();
      @Nullable T result = null;
      try {
        result = fn.get();
      } catch (@javax.annotation.Nonnull final RuntimeException e) {
        throw e;
      } catch (@javax.annotation.Nonnull final Exception e) {
        throw new RuntimeException(e);
      }
      long wallClockTime = System.nanoTime() - start;
      long gcTime = ManagementFactory.getGarbageCollectorMXBeans().stream().mapToLong(x -> x.getCollectionTime()).sum() - priorGcMs;
      return new com.simiacryptus.util.lang.TimedResult<T>(result, wallClockTime, gcTime);
    }