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).
}
            }
            return endOfData();
          }
        };
      }
      @Override
      public Stream<E> stream() {
        return set1.stream().filter(e -> !set2.contains(e));
      }
      @Override
      public Stream<E> parallelStream() {
        return set1.parallelStream().filter(e -> !set2.contains(e));
      }
      @Override
      public int size() {
        int size = 0;
        for (E e : set1) {
          if (!set2.contains(e)) {
            size++;
          }
        }
        return size;
      }
      @Override
      public boolean isEmpty() {
        return set2.containsAll(set1);
      }
      @Override
      public boolean contains(Object element) {