
![image](https://user-images.githubusercontent.com/12162539/50417924-d6cc2b80-0863-11e9-860f-bf9d132db570.png)

return this;
    }
    /**
     * end a branch node
     *
     * @return this
     */
    public TTree end() {
        if (current.isRoot()) {
            throw new IllegalStateException("current node is root.");
        }
        current.markEnd();
        current = current.parent;
        return this;
    }
    /**
     * tree node
     */
    private static class Node {
        /**
         * parent node
         */
        final Node parent;
        /**
         * node data
         */
        Object data;
        /**
         * child nodes
         */