[REFACTOR] Cleanup StreamUtils
diff --git a/server/container/util/src/main/java/org/apache/james/util/StreamUtils.java b/server/container/util/src/main/java/org/apache/james/util/StreamUtils.java
index 87194eb..ccdffd2 100644
--- a/server/container/util/src/main/java/org/apache/james/util/StreamUtils.java
+++ b/server/container/util/src/main/java/org/apache/james/util/StreamUtils.java
@@ -21,21 +21,12 @@
 
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.List;
 import java.util.Optional;
-import java.util.Spliterator;
-import java.util.function.Consumer;
 import java.util.function.Function;
 import java.util.stream.Stream;
-import java.util.stream.StreamSupport;
-
-import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableList;
 
 public class StreamUtils {
 
-    private static final boolean PARALLEL = true;
-
     @SafeVarargs
     public static <T> Stream<T> ofNullables(T... array) {
         return ofNullable(array);
@@ -59,73 +50,8 @@
         return streams.flatMap(Function.identity());
     }
 
-    public static <T> boolean isSingleValued(Stream<T> stream) {
-        return stream.distinct()
-            .limit(2)
-            .count() == 1;
-    }
-
     @SafeVarargs
     public static <T> Stream<T> flatten(Stream<T>... streams) {
         return flatten(Arrays.stream(streams));
     }
-
-    public static <T> Stream<T> unfold(T seed, Function<T, Optional<T>> generator) {
-        return StreamSupport.stream(new UnfoldSpliterator(seed, generator), !PARALLEL);
-    }
-
-    public static <T> Stream<T> iterate(T seed, Long limit, Function<T, Stream<T>> generator) {
-        Preconditions.checkArgument(limit >= 0, "StreamUtils.iterate have a given limit '{}', while it should not be negative", limit);
-        return StreamUtils.unfold(Arrays.asList(seed), conservativeGenerator(generator))
-            .limit(limit + 1)
-            .flatMap(List::stream);
-    }
-
-    private static <T> Function<List<T>, Optional<List<T>>> conservativeGenerator(Function<T, Stream<T>> generator) {
-        return previous -> {
-            List<T> generated = previous.stream()
-                .flatMap(generator)
-                .collect(ImmutableList.toImmutableList());
-
-            if (generated.isEmpty()) {
-                return Optional.empty();
-            } else {
-                return Optional.of(generated);
-            }
-        };
-    }
-
-    private static class UnfoldSpliterator<T> implements Spliterator<T> {
-
-        private static final Spliterator<?> NOT_ABLE_TO_SPLIT_SPLITERATOR = null;
-        private Optional<T> current;
-        private final Function<T, Optional<T>> generator;
-
-        private UnfoldSpliterator(T seed, Function<T, Optional<T>> generator) {
-            this.current = Optional.of(seed);
-            this.generator = generator;
-        }
-
-        @Override
-        public boolean tryAdvance(Consumer<? super T> action) {
-            current.ifPresent(action);
-            current = current.flatMap(generator);
-            return current.isPresent();
-        }
-
-        @Override
-        public Spliterator<T> trySplit() {
-            return (Spliterator<T>) NOT_ABLE_TO_SPLIT_SPLITERATOR;
-        }
-
-        @Override
-        public long estimateSize() {
-            return Long.MAX_VALUE;
-        }
-
-        @Override
-        public int characteristics() {
-            return Spliterator.IMMUTABLE & Spliterator.NONNULL & Spliterator.ORDERED;
-        }
-    }
 }
diff --git a/server/container/util/src/test/java/org/apache/james/util/StreamUtilsTest.java b/server/container/util/src/test/java/org/apache/james/util/StreamUtilsTest.java
index 8f1d2aa..6c14fbb 100644
--- a/server/container/util/src/test/java/org/apache/james/util/StreamUtilsTest.java
+++ b/server/container/util/src/test/java/org/apache/james/util/StreamUtilsTest.java
@@ -20,11 +20,8 @@
 package org.apache.james.util;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatCode;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
-import java.util.Optional;
-import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Stream;
 
 import org.junit.jupiter.api.Test;
@@ -114,71 +111,4 @@
             .collect(ImmutableList.toImmutableList()))
             .containsExactly(1, 2);
     }
-
-    @Test
-    void unfoldShouldGenerateAFiniteStream() {
-        Stream<Integer> unfolded = StreamUtils.unfold(1, i -> {
-            if (i < 10) {
-                return Optional.of(i + 1);
-            } else {
-                return Optional.empty();
-            }
-        });
-
-        assertThat(unfolded.collect(ImmutableList.toImmutableList()))
-            .contains(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
-    }
-
-    @Test
-    void unfoldShouldGenerateALazyInfiniteStream() {
-        AtomicInteger counter = new AtomicInteger(0);
-        Stream<Integer> unfolded = StreamUtils.unfold(1, i -> {
-            counter.incrementAndGet();
-            return Optional.of(i + 1);
-        });
-
-        assertThat(unfolded.limit(10).collect(ImmutableList.toImmutableList()))
-            .contains(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
-
-        assertThat(counter.get())
-            .isEqualTo(10);
-    }
-
-    @Test
-    void unfoldShouldHaveAtLeastTheSeed() {
-        Stream<Integer> unfolded = StreamUtils.unfold(1, i -> Optional.empty());
-
-        assertThat(unfolded.collect(ImmutableList.toImmutableList()))
-            .contains(1);
-    }
-
-    @Test
-    void iterateWithANegativeLimitShouldThrow() {
-        assertThatCode(() -> StreamUtils.iterate(1, (long) -1, Stream::of))
-            .isInstanceOf(IllegalArgumentException.class);
-    }
-
-    @Test
-    void iterateWithZeroLimitShouldHaveOnlyTheSeed() {
-        Stream<Integer> generated = StreamUtils.iterate(1, (long) 0, Stream::of);
-
-        assertThat(generated.collect(ImmutableList.toImmutableList()))
-            .containsOnly(1);
-    }
-
-    @Test
-    void iterateWithEmptyGeneratorShouldHaveOnlyTheSeed() {
-        Stream<Integer> generated = StreamUtils.iterate(1, (long) 10, i -> Stream.of());
-
-        assertThat(generated.collect(ImmutableList.toImmutableList()))
-            .containsOnly(1);
-    }
-
-    @Test
-    void iterateWithGeneratorShouldHaveOnlyTheLimitedElements() {
-        Stream<Integer> generated = StreamUtils.iterate(1, (long) 5, i -> Stream.of(i + 1));
-
-        assertThat(generated.collect(ImmutableList.toImmutableList()))
-            .containsOnly(1, 2, 3, 4, 5, 6);
-    }
 }