default Optional<T> nextNode() {
		Optional<T> next = Optional.empty();

		if (childCount() == 0) {
			T node = self();
			while (node != null && (next = node.nextSibling()).isEmpty()) {
				node = node.parent().orElse(null);
			}
		} else {
			next = Optional.of(childAt(0));
		}

		return next;
	}
Return the node that follows {@code this} node in a pre-order traversal
of {@code this} tree node. Return {@code Optional.empty()} if this node
is the last node of the traversal. This is an inefficient way to traverse
the entire tree use an iterator instead.

@see #preorderIterator
@return the node that follows this node in a pre-order traversal, or
       {@code Optional.empty()} if this node is last
jenetics.ext/src/main/java/io/jenetics/ext/util/Tree.java