code: static <F, T> Spliterator<T> map(
        Spliterator<F> fromSpliterator, Function<? super F, ? extends T> function) {
      checkNotNull(fromSpliterator);
      checkNotNull(function);
      return new Spliterator<T>() {
  
        @Override
        public boolean tryAdvance(Consumer<? super T> action) {
          return fromSpliterator.tryAdvance(
              fromElement -> action.accept(function.apply(fromElement)));
        }
  
        @Override
        public void forEachRemaining(Consumer<? super T> action) {
          fromSpliterator.forEachRemaining(fromElement -> action.accept(function.apply(fromElement)));
        }
  
        @Override
        public Spliterator<T> trySplit() {
          Spliterator<F> fromSplit = fromSpliterator.trySplit();
          return (fromSplit != null) ? map(fromSplit, function) : null;
        }
  
        @Override
        public long estimateSize() {
          return fromSpliterator.estimateSize();
        }
  
        @Override
        public int characteristics() {
          return fromSpliterator.characteristics()
              & ~(Spliterator.DISTINCT | Spliterator.NONNULL | Spliterator.SORTED);
        }
      };
    }
docs: Returns a {@code Spliterator} over the elements of {@code fromSpliterator} mapped by {@code
  function}.