default Optional<T> nextLeaf() {
		return nextSibling()
			.map(Tree::firstLeaf)
			.or(() -> parent().flatMap(Tree::nextLeaf));
	}
Returns the leaf after {@code this} node or {@code Optional.empty()} if
this node is the last leaf in the tree.
<p>
In order to determine the next node, this method first performs a linear
search in the parent's child-list in order to find the current node.
<p>
That implementation makes the operation suitable for short traversals
from a known position. But to traverse all the leaves in the tree, you
should use {@link #depthFirstIterator()} to iterator the nodes in the
tree and use {@link #isLeaf()} on each node to determine which are leaves.

@see #depthFirstIterator
@see #isLeaf
@return return the next leaf past this node
jenetics.ext/src/main/java/io/jenetics/ext/util/Tree.java