@Serial
	private Object writeReplace() {
		return new SerialProxy(SerialProxy.FLAT_TREE_NODE, this);
	}
Parses a (parentheses) tree string, created with
{@link Tree#toParenthesesString()}. The tree string might look like this
<pre>
 0(1(4,5),2(6),3(7(10,11),8,9))
</pre>
and can be parsed to an integer tree with the following code:
{@snippet lang="java":
final Tree<Integer, ?> tree = FlatTreeNode.parse(
    "0(1(4,5),2(6),3(7(10,11),8,9))",
    Integer::parseInt
);
}

@see Tree#toParenthesesString(Function)
@see Tree#toParenthesesString()
@see TreeNode#parse(String, Function)

@since 5.0

@param <B> the tree node value type
@param tree the parentheses tree string
@param mapper the mapper which converts the serialized string value to
       the desired type
@return the parsed tree object
@throws NullPointerException if one of the arguments is {@code null}
@throws IllegalArgumentException if the given parentheses tree string
        doesn't represent a valid tree
jenetics.ext/src/main/java/io/jenetics/ext/util/FlatTreeNode.java