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).
new ImmutableList<List<E>>() {
            @Override
            public int size() {
              return axes.size();
            }
            @Override
            public List<E> get(int index) {
              return axes.get(index).asList();
            }
            @Override
            boolean isPartialView() {
              return true;
            }
          };
      return new CartesianSet<E>(axes, new CartesianList<E>(listAxes));
    }
    private CartesianSet(ImmutableList<ImmutableSet<E>> axes, CartesianList<E> delegate) {
      this.axes = axes;
      this.delegate = delegate;
    }
    @Override
    protected Collection<List<E>> delegate() {
      return delegate;
    }
    @Override
    public boolean equals(@NullableDecl Object object) {
      
      
      if (object instanceof CartesianSet) {
        CartesianSet<?> that = (CartesianSet<?>) object;