deselect(shallow) {
        if (this.selected() && (!this._tree.config.selection.require || this._tree.selected().length > 1)) {
            this.context().batch();

            // Will we apply this state change to our children?
            const deep = !shallow && this._tree.config.selection.autoSelectChildren;

            baseStateChange('selected', false, 'deselected', this, deep);

            if (this._tree._lastSelectedNode === this) {
                this._tree._lastSelectedNode = null;
            }

            this.context().end();
        }

        return this;
    }
Deselect this node.

If selection.require is true and this is the last selected
node, the node will remain in a selected state.

@param {boolean} shallow Skip auto-deselecting children.
@return {TreeNode} Node object.