@Override
 @Test
 public void intersectInto() {
   Assert.assertEquals(
       UnifiedSet.<String>newSet(),
       this.classUnderTest()
           .intersectInto(UnifiedSet.newSetWith(1, 2, 3), UnifiedSet.<Integer>newSet()));
 }
 @Override
 @Test
 public void differenceInto() {
   ImmutableSet<Integer> set = this.classUnderTest();
   MutableSet<Integer> difference =
       set.differenceInto(UnifiedSet.newSetWith(1, 2, 3, 999), UnifiedSet.<Integer>newSet());
   Assert.assertEquals(UnifiedSet.<Integer>newSet(), difference);
   Assert.assertEquals(
       set, set.differenceInto(UnifiedSet.newSetWith(99), UnifiedSet.<Integer>newSet()));
 }
  @Override
  @Test
  public void zipWithIndex() {
    ImmutableSet<Integer> immutableSet = this.classUnderTest();
    ImmutableSet<Pair<Integer, Integer>> pairs = immutableSet.zipWithIndex();

    Assert.assertEquals(immutableSet, pairs.transform(Functions.<Integer>firstOfPair()));
    Assert.assertEquals(
        UnifiedSet.<Integer>newSet(), pairs.transform(Functions.<Integer>secondOfPair()));

    Assert.assertEquals(
        immutableSet.zipWithIndex(),
        immutableSet.zipWithIndex(UnifiedSet.<Pair<Integer, Integer>>newSet()));
  }
 @Override
 @Test
 public void symmetricDifferenceInto() {
   Assert.assertEquals(
       UnifiedSet.newSetWith(999),
       this.classUnderTest()
           .symmetricDifferenceInto(UnifiedSet.newSetWith(999), UnifiedSet.<Integer>newSet()));
 }
 @Override
 @Test
 public void unionInto() {
   Assert.assertEquals(
       UnifiedSet.newSetWith(1, 2, 3),
       this.classUnderTest()
           .unionInto(UnifiedSet.newSetWith(1, 2, 3), UnifiedSet.<Integer>newSet()));
 }
  @Override
  @Test
  public void zip() {
    ImmutableSet<Integer> immutableSet = this.classUnderTest();
    List<Object> nulls = Collections.nCopies(immutableSet.size(), null);
    List<Object> nullsPlusOne = Collections.nCopies(immutableSet.size() + 1, null);

    ImmutableSet<Pair<Integer, Object>> pairs = immutableSet.zip(nulls);
    Assert.assertEquals(immutableSet, pairs.transform(Functions.<Integer>firstOfPair()));
    Assert.assertEquals(
        UnifiedSet.<Object>newSet(nulls), pairs.transform(Functions.<Object>secondOfPair()));

    ImmutableSet<Pair<Integer, Object>> pairsPlusOne = immutableSet.zip(nullsPlusOne);
    Assert.assertEquals(immutableSet, pairsPlusOne.transform(Functions.<Integer>firstOfPair()));
    Assert.assertEquals(
        UnifiedSet.<Object>newSet(nulls), pairsPlusOne.transform(Functions.<Object>secondOfPair()));

    Assert.assertEquals(
        immutableSet.zip(nulls),
        immutableSet.zip(nulls, UnifiedSet.<Pair<Integer, Object>>newSet()));
  }