TreeNode = function (name, hostTree) {
	        /**
	         * @type {string}
	         */
	        this.name = name || '';

	        /**
	         * Depth of node
	         *
	         * @type {number}
	         * @readOnly
	         */
	        this.depth = 0;

	        /**
	         * Height of the subtree rooted at this node.
	         * @type {number}
	         * @readOnly
	         */
	        this.height = 0;

	        /**
	         * @type {module:echarts/data/Tree~TreeNode}
	         * @readOnly
	         */
	        this.parentNode = null;

	        /**
	         * Reference to list item.
	         * Do not persistent dataIndex outside,
	         * besause it may be changed by list.
	         * If dataIndex -1,
	         * this node is logical deleted (filtered) in list.
	         *
	         * @type {Object}
	         * @readOnly
	         */
	        this.dataIndex = -1;

	        /**
	         * @type {Array.<module:echarts/data/Tree~TreeNode>}
	         * @readOnly
	         */
	        this.children = [];

	        /**
	         * @type {Array.<module:echarts/data/Tree~TreeNode>}
	         * @pubilc
	         */
	        this.viewChildren = [];

	        /**
	         * @type {moduel:echarts/data/Tree}
	         * @readOnly
	         */
	        this.hostTree = hostTree;
	    }
@private
@readOnly
@type {Array.<module:echarts/model/Model}