code: public <T> T timeSupplier(Supplier<T> event) {
          final long startTime = clock.getTick();
          try {
              return event.get();
          } finally {
              update(clock.getTick() - startTime);
          }
      }
docs: Times and records the duration of event. Should not throw exceptions, for that use the
  {@link #time(Callable)} method.
  
  @param event a {@link Supplier} whose {@link Supplier#get()} method implements a process
  whose duration should be timed
  @param <T>   the type of the value returned by {@code event}
  @return the value returned by {@code event}