This was almost certainly my fault, but as I look at the implementation of Sets.cartesianProduct, I think its `contains` method made the assumption that `ImmutableSet.asList().indexOf` was O(1), which is no longer the case for Android.  It should probably get a specific `contains` implementation that actually is O(sets), not O(sets*setSize).
FilteredSet(Set<E> unfiltered, Predicate<? super E> predicate) {
      super(unfiltered, predicate);
    }
    @Override
    public boolean equals(@NullableDecl Object object) {
      return equalsImpl(this, object);
    }
    @Override
    public int hashCode() {
      return hashCodeImpl(this);
    }
  }
  private static class FilteredSortedSet<E> extends FilteredSet<E> implements SortedSet<E> {
    FilteredSortedSet(SortedSet<E> unfiltered, Predicate<? super E> predicate) {
      super(unfiltered, predicate);
    }
    @Override
    public Comparator<? super E> comparator() {
      return ((SortedSet<E>) unfiltered).comparator();
    }