code: public static <E> Set<E> filter(Set<E> unfiltered, Predicate<? super E> predicate) {
      if (unfiltered instanceof SortedSet) {
        return filter((SortedSet<E>) unfiltered, predicate);
      }
      if (unfiltered instanceof FilteredSet) {
        // Support clear(), removeAll(), and retainAll() when filtering a filtered
        // collection.
        FilteredSet<E> filtered = (FilteredSet<E>) unfiltered;
        Predicate<E> combinedPredicate = Predicates.<E>and(filtered.predicate, predicate);
        return new FilteredSet<E>((Set<E>) filtered.unfiltered, combinedPredicate);
      }
  
      return new FilteredSet<E>(checkNotNull(unfiltered), checkNotNull(predicate));
    }
docs: TODO(kevinb): how to omit that last sentence when building GWT javadoc?