static <T> void forEachWithTail(Spliterator<T> target, Consumer<? super T> action) { while (true) { if (target instanceof TailSpliterator) { Spliterator<T> spltr = ((TailSpliterator<T>) target).forEachOrTail(action); if (spltr == null) break; target = spltr; } else { target.forEachRemaining(action); break; } } } }