docs: public Stream<T> filter(Predicate<? super T> predicate) {
          List<T> reduction = new ArrayList<T>();
          while (iterator.hasNext()) {
              final T element = iterator.next();
              if (predicate.test(element)) {
                  reduction.add(element);
              }
          }
          return Stream.of(reduction);
      }