code: public static <E> SetFactory<E> cow(SetFactory<E> underSetFact) {
  	return new jpaul.DataStructs.COWSetFactory<E>(underSetFact);
      }
docs: Returns a set factory that generates "copy-on-write" (COW)
  sets.  A COW set shares its representation (also a set) with
  other COW sets, until a mutation occurs.  At that moment, the
  COW set makes a private, exclusive copy of its underlying
  representation, and mutates that copy.
  
  <p>The internal representation of a COW set maintains a
  "sharing" counter to identify cases when the representation is
  not shared with anyone (and hence, no cloning is necessary
  before a mutation).
  
  <p>Cloning a COW set is a constant time operation.  COW sets
  are good when it is hard to determine statically whether a
  clone of a set will be mutated: they delay the real cloning
  until the first mutation (if any).
  
  @param underSetFact Set factory for generating the sets used
  in the representation of the COW sets.