docs: public <R> Choice<R> thenOption(final Function<? super T, Optional<R>> function) {
      checkNotNull(function);
      final Choice<T> thisChoice = this;
      return new Choice<R>() {
        @Override
        protected Iterator<R> iterator() {
          return Optional.presentInstances(Iterables.transform(thisChoice.asIterable(), function))
              .iterator();
        }
      };
    }