code: public static <T, T2 extends T> Iterator<T> inOrder(T2 root, BinTreeNavigator<T2> binTreeNav) {
  	return new InOrderIterator<T,T2>(root, binTreeNav);
      }
docs: Returns an iterator that traverses all vertices of a binary
  tree in inorder.  The iterator is lazy: it does not construct
  an explicit list with the tree vertices in inorder; instead,
  vertices are returned one-by-one, on demand.  The time
  complexity of iterating over an entire tree is linear in the
  tree size; the space complexity is linear in the tree depth.
  
  <p><b>Note1:</b> the complication with two type parameters
  simulates the common-sense fact that the iterator subtyping is
  co-variant with the element subtyping.
  
  <p><b>Note2:</b> supports trees with sharing; shared nodes
  will be returned multiple times.
  
  <p><b>Note3:</b> of we had a parent pointer, it would have
  been possible to do the traversal with O(1) additional space;
  however, to simplify the interface, no such information is
  provided by the tree navigator, and we have to maintain an
  explicit stack of parent nodes.
  
  @param root The root node of the binary tree.
  
  @param binTreeNav The binary tree navigator.