code: public static <T> TreeNode<T> ofTree(final Tree<? extends T, ?> tree) {
  		return ofTree(tree, Function.identity());
  	}
docs: Return a new {@code TreeNode} from the given source {@code tree}. The
  whole tree is copied.
  
  @param tree the source tree the new tree-node is created from
  @param <T> the current tree value type
  @return a new {@code TreeNode} from the given source {@code tree}
  @throws NullPointerException if the source {@code tree} is {@code null}