default Iterator<T> pathFromAncestorIterator(final Tree<?, ?> ancestor) {
		return new TreeNodePathIterator<>(ancestor, self());
	}
Return an iterator that follows the path from {@code ancestor} to
{@code this} node. The iterator return {@code ancestor} as a first element,
The creation of the iterator is O(m), where m is the number of nodes
between {@code this} node and the {@code ancestor}, inclusive.
<p>
Modifying the tree by inserting, removing, or moving a node invalidates
any iterator created before the modification.

@see #isAncestor
@see #isDescendant
@param ancestor the ancestor node
@return an iterator for following the path from an ancestor of {@code this}
        node to this one
@throws IllegalArgumentException if the {@code ancestor} is not an
        ancestor of this node
@throws NullPointerException if the given {@code ancestor} is {@code null}
jenetics.ext/src/main/java/io/jenetics/ext/util/Tree.java