public boolean isProperSubsetOf(SetIterable<? extends T> candidateSuperset) {
   return SetIterables.isProperSubsetOf(this, candidateSuperset);
 }
 public <B> LazyIterable<Pair<T, B>> cartesianProduct(SetIterable<B> set) {
   return SetIterables.cartesianProduct(this, set);
 }
 public ImmutableSortedSet<T> symmetricDifference(SetIterable<? extends T> setB) {
   return SetIterables.symmetricDifferenceInto(
           this, setB, TreeSortedSet.<T>newSet(this.comparator()))
       .toImmutable();
 }
 public <R extends Set<T>> R symmetricDifferenceInto(SetIterable<? extends T> set, R targetSet) {
   return SetIterables.symmetricDifferenceInto(this, set, targetSet);
 }
 public <R extends Set<T>> R differenceInto(SetIterable<? extends T> subtrahendSet, R targetSet) {
   return SetIterables.differenceInto(this, subtrahendSet, targetSet);
 }
 public ImmutableSortedSet<T> difference(SetIterable<? extends T> subtrahendSet) {
   return SetIterables.differenceInto(
           this, subtrahendSet, TreeSortedSet.<T>newSet(this.comparator()))
       .toImmutable();
 }
 public <R extends Set<T>> R intersectInto(SetIterable<? extends T> set, R targetSet) {
   return SetIterables.intersectInto(this, set, targetSet);
 }
 public ImmutableSortedSet<T> intersect(SetIterable<? extends T> set) {
   return SetIterables.intersectInto(this, set, TreeSortedSet.<T>newSet(this.comparator()))
       .toImmutable();
 }
 public <R extends Set<T>> R unionInto(SetIterable<? extends T> set, R targetSet) {
   return SetIterables.unionInto(this, set, targetSet);
 }