code: public <T> T time(Callable<T> event) throws Exception {
          final long startTime = clock.getTick();
          try {
              return event.call();
          } finally {
              update(clock.getTick() - startTime);
          }
      }
docs: Times and records the duration of an event.
  
  @param event a {@link Callable} whose {@link Callable#call()} 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}
  @throws Exception if {@code event} throws an {@link Exception}