/* * Decompiled with CFR 0.152. */ package com.google.common.base; import com.google.common.annotations.GwtCompatible; import com.google.common.base.Equivalence; import com.google.common.base.Preconditions; import java.io.Serializable; import java.util.Iterator; import javax.annotation.Nullable; @GwtCompatible(serializable=true) final class PairwiseEquivalence extends Equivalence> implements Serializable { final Equivalence elementEquivalence; private static final long serialVersionUID = 1L; PairwiseEquivalence(Equivalence elementEquivalence) { this.elementEquivalence = Preconditions.checkNotNull(elementEquivalence); } @Override protected boolean doEquivalent(Iterable iterableA, Iterable iterableB) { Iterator iteratorA = iterableA.iterator(); Iterator iteratorB = iterableB.iterator(); while (iteratorA.hasNext() && iteratorB.hasNext()) { if (this.elementEquivalence.equivalent(iteratorA.next(), iteratorB.next())) continue; return false; } return !iteratorA.hasNext() && !iteratorB.hasNext(); } @Override protected int doHash(Iterable iterable) { int hash = 78721; for (T element : iterable) { hash = hash * 24943 + this.elementEquivalence.hash(element); } return hash; } public boolean equals(@Nullable Object object) { if (object instanceof PairwiseEquivalence) { PairwiseEquivalence that = (PairwiseEquivalence)object; return this.elementEquivalence.equals(that.elementEquivalence); } return false; } public int hashCode() { return this.elementEquivalence.hashCode() ^ 0x46A3EB07; } public String toString() { String string = String.valueOf(String.valueOf(this.elementEquivalence)); return new StringBuilder(11 + string.length()).append(string).append(".pairwise()").toString(); } }