package net.minecraft.client.searchtree; import com.google.common.collect.AbstractIterator; import com.google.common.collect.Iterators; import com.google.common.collect.PeekingIterator; import java.util.Comparator; import java.util.Iterator; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @OnlyIn(Dist.CLIENT) public class MergingUniqueIterator extends AbstractIterator { private final PeekingIterator firstIterator; private final PeekingIterator secondIterator; private final Comparator comparator; public MergingUniqueIterator(Iterator p_235186_, Iterator p_235187_, Comparator p_235188_) { this.firstIterator = Iterators.peekingIterator(p_235186_); this.secondIterator = Iterators.peekingIterator(p_235187_); this.comparator = p_235188_; } @Override protected T computeNext() { boolean flag = !this.firstIterator.hasNext(); boolean flag1 = !this.secondIterator.hasNext(); if (flag && flag1) { return this.endOfData(); } else if (flag) { return this.secondIterator.next(); } else if (flag1) { return this.firstIterator.next(); } else { int i = this.comparator.compare(this.firstIterator.peek(), this.secondIterator.peek()); if (i == 0) { this.secondIterator.next(); } return i <= 0 ? this.firstIterator.next() : this.secondIterator.next(); } } }