code: public Set<E> equivalenceClass(E e) {
  	// Case 1. an element by itself
  	if(unUnified(e)) {
  	    return Collections.singleton(e);
  	}
  	// Case 2. an element from a larger equivalence class
  	Set<E> equivClass = new LinkedHashSet<E>();
  	// as e is not unUnified, elmap.get(e) != null
  	Node<E> reprRoot = _find_root(elmap.get(e));
  	for(E elem : elmap.keySet()) {
  	    Node<E> elemRoot = _find_root(elmap.get(elem));
  	    if(elemRoot == reprRoot) {
  		equivClass.add(elem);
  	    }
  	}
  	return Collections.unmodifiableSet(equivClass);
      }
docs: Returns the equivalence class that element <code>e</code> is
  part of, as an unmodifiable set containing all elements from
  that class (including <code>e</code>).
  
  <p> This method is quite slow: its execution time is at least
  linear in the size of the underlying forest!