Show:
                            /**
                            @module tree
                            @submodule tree-selectable
                            **/
                            
                            /**
                            `Tree.Node` extension that adds methods useful for nodes in trees that use the
                            `Tree.Selectable` extension.
                            
                            @class Tree.Node.Selectable
                            @constructor
                            @extensionfor Tree.Node
                            **/
                            
                            function NodeSelectable() {}
                            
                            NodeSelectable.prototype = {
                                /**
                                Returns `true` if this node is currently selected.
                            
                                @method isSelected
                                @return {Boolean} `true` if this node is currently selected, `false`
                                    otherwise.
                                **/
                                isSelected: function () {
                                    return !!this.state.selected;
                                },
                            
                                /**
                                Selects this node.
                            
                                @method select
                                @param {Object} [options] Options.
                                    @param {Boolean} [options.silent=false] If `true`, the `select` event
                                        will be suppressed.
                                    @param {String} [options.src] Source of the change, to be passed along
                                        to the event facade of the resulting event. This can be used to
                                        distinguish between changes triggered by a user and changes
                                        triggered programmatically, for example.
                                @chainable
                                **/
                                select: function (options) {
                                    this.tree.selectNode(this, options);
                                    return this;
                                },
                            
                                /**
                                Unselects this node.
                            
                                @method unselect
                                @param {Object} [options] Options.
                                    @param {Boolean} [options.silent=false] If `true`, the `unselect` event
                                        will be suppressed.
                                    @param {String} [options.src] Source of the change, to be passed along
                                        to the event facade of the resulting event. This can be used to
                                        distinguish between changes triggered by a user and changes
                                        triggered programmatically, for example.
                                @chainable
                                **/
                                unselect: function (options) {
                                    this.tree.unselectNode(this, options);
                                    return this;
                                }
                            };
                            
                            Y.Tree.Node.Selectable = NodeSelectable;