@Override
  public boolean equals(@Nullable Object o) {
    if (o == this) {
      return true;
    }
    if (o instanceof MultiCacheKey) {
      final MultiCacheKey otherKey = (MultiCacheKey) o;
      return mCacheKeys.equals(otherKey.mCacheKeys);
    }
    return false;
  }
A cache key that wraps multiple cache keys.

<p>Note: {@code equals} and {@code hashcode} are implemented in a way that two MultiCacheKeys are
equal if and only if the underlying list of cache keys is equal. That implies AllOf semantics.
Unfortunately, it is not possible to implement AnyOf semantics for {@code equals} because the
transitivity requirement wouldn't be satisfied. I.e. we would have: {A} = {A, B}, {A, B} = {B},
but {A} != {B}.

<p>It is fine to use this key with AnyOf semantics, but one should be aware of {@code equals} and
{@code hashcode} behavior, and should implement AnyOf logic manually.
imagepipeline-base/src/main/java/com/facebook/cache/common/MultiCacheKey.java