/* * Decompiled with CFR 0.152. */ package com.google.common.base; import com.google.common.annotations.Beta; import com.google.common.annotations.GwtCompatible; import com.google.common.base.Equivalence; import com.google.common.base.Function; import com.google.common.base.Objects; import com.google.common.base.Preconditions; import java.io.Serializable; import javax.annotation.Nullable; @Beta @GwtCompatible final class FunctionalEquivalence extends Equivalence implements Serializable { private static final long serialVersionUID = 0L; private final Function function; private final Equivalence resultEquivalence; FunctionalEquivalence(Function function, Equivalence resultEquivalence) { this.function = Preconditions.checkNotNull(function); this.resultEquivalence = Preconditions.checkNotNull(resultEquivalence); } @Override protected boolean doEquivalent(F a, F b) { return this.resultEquivalence.equivalent(this.function.apply(a), this.function.apply(b)); } @Override protected int doHash(F a) { return this.resultEquivalence.hash(this.function.apply(a)); } public boolean equals(@Nullable Object obj) { if (obj == this) { return true; } if (obj instanceof FunctionalEquivalence) { FunctionalEquivalence that = (FunctionalEquivalence)obj; return this.function.equals(that.function) && this.resultEquivalence.equals(that.resultEquivalence); } return false; } public int hashCode() { return Objects.hashCode(this.function, this.resultEquivalence); } public String toString() { String string = String.valueOf(String.valueOf(this.resultEquivalence)); String string2 = String.valueOf(String.valueOf(this.function)); return new StringBuilder(13 + string.length() + string2.length()).append(string).append(".onResultOf(").append(string2).append(")").toString(); } }