Newer
Older
void-pack-super-server / work / decompile-ee3ecae0 / net / minecraft / server / StreamAccumulator.java
package net.minecraft.server;

import com.google.common.collect.Lists;
import java.util.List;
import java.util.Spliterator;
import java.util.Spliterators.AbstractSpliterator;
import java.util.function.Consumer;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;

public class StreamAccumulator<T> {

    private final List<T> a = Lists.newArrayList();
    private final Spliterator<T> b;

    public StreamAccumulator(Stream<T> stream) {
        this.b = stream.spliterator();
    }

    public Stream<T> a() {
        return StreamSupport.stream(new AbstractSpliterator<T>(Long.MAX_VALUE, 0) {
            private int b;

            public boolean tryAdvance(Consumer<? super T> consumer) {
                while (true) {
                    if (this.b >= StreamAccumulator.this.a.size()) {
                        Spliterator spliterator = StreamAccumulator.this.b;
                        List list = StreamAccumulator.this.a;

                        list.getClass();
                        if (spliterator.tryAdvance(list::add)) {
                            continue;
                        }

                        return false;
                    }

                    consumer.accept(StreamAccumulator.this.a.get(this.b++));
                    return true;
                }
            }
        }, false);
    }
}