code: public static ThreadFactory newThreadFactory(Optional<Logger> logger) {
      return newThreadFactory(logger, Optional.<String>absent());
    }
docs: Get a new {@link java.util.concurrent.ThreadFactory} that uses a {@link LoggingUncaughtExceptionHandler}
  to handle uncaught exceptions.
  
  @param logger an {@link com.google.common.base.Optional} wrapping the {@link org.slf4j.Logger} that the
  {@link LoggingUncaughtExceptionHandler} uses to log uncaught exceptions thrown in threads
  @return a new {@link java.util.concurrent.ThreadFactory}