public <B> TreeNode<B> map(final Function<? super T, ? extends B> mapper) {
		final TreeNode<B> target = TreeNode.of(mapper.apply(value()));
		copy(this, target, mapper);
		return target;
	}
Returns a new {@code TreeNode} consisting of all nodes of {@code this}
tree, but with a different value type, created by applying the given
function to the node values of {@code this} tree.

@param mapper the node value mapper
@param <B> the new node type
@return a new tree consisting of all nodes of {@code this} tree
@throws NullPointerException if the given {@code mapper} function is
        {@code null}
jenetics.ext/src/main/java/io/jenetics/ext/util/TreeNode.java