code: public static <K,V> RelationFactory<K,V> cow(RelationFactory<K,V> underRelFact) {
  	return new jpaul.DataStructs.COWRelationFactory<K,V>(underRelFact);
      }
docs: Returns a relation factory that generates "copy-on-write"
  (COW) relations.  A COW relation shares its representation
  (also a relation) with other COW relations, until a mutation
  occurs.  At that moment, the COW relation makes a private,
  exclusive copy of its underlying representation, and mutates
  that copy.
  
  <p>The internal representation of a COW representation
  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 relation is a constant time operation.  COW
  relations are good when it is hard to determine statically
  whether a clone of a relation will be mutated: they delay the
  real cloning until the first mutation (if any).
  
  @param underRelFact Relation factory for generating the
  relations used in the representation of the generated COW
  relations.