code: function(nodes) {
      var tmp = [];
      if (typeof nodes === 'string') { // selector query
          this._query = nodes;
          nodes = Y.Selector.query(nodes);
      } else if (nodes.nodeType || Y_DOM.isWindow(nodes)) { // domNode || window
          nodes = [nodes];
      } else if (nodes instanceof Y.Node) {
          nodes = [nodes._node];
      } else if (nodes[0] instanceof Y.Node) { // allow array of Y.Nodes
          Y.Array.each(nodes, function(node) {
              if (node._node) {
                  tmp.push(node._node);
              }
          });
          nodes = tmp;
      } else { // array of domNodes or domNodeList (no mixed array of Y.Node/domNodes)
          nodes = Y.Array(nodes, 0, true);
      }
  
      /**
       * The underlying array of DOM nodes bound to the Y.NodeList instance
       * @property _nodes
       * @private
       */
      this._nodes = nodes;
  }
docs: The NodeList module provides support for managing collections of Nodes.
  @module node
  @submodule nodelist
   
  The NodeList class provides a wrapper for manipulating DOM NodeLists.
  NodeList properties can be accessed via the set/get methods.
  Use Y.all() to retrieve NodeList instances.
  
  @class NodeList
  @constructor