code: function(node, localMap) {
                  var _textNodeMap = localMap || textNodeMap;
                  var id = readId(node, _textNodeMap);
                  if (id) {
                      return id;
                  } else {
                      // If the browser supports expando properties or the node
                      // provided is not an HTMLTextNode, we don't need to work
                      // with the internal textNodeMap and we can place the property
                      // on the node.
                      if (canExpando || node.nodeType !== 3) {
                          ++_id;
                          return node[expando] = (node.nodeName ? 'element_' : 'obj_') + _id;
                      } else {
                          // If we didn't find the node, we need to register it and return
                          // the id used.
                          ++_id;
  
                          // If we didn't find the node, we need to register it and return
                          // the id used.
                          // We have to store the node itself because of the browser's lack
                          // of support for expando properties (i.e. we can't use a look-up
                          // table and store the id on the node as a custom property).
                          _textNodeMap['text_' + _id] = node;
                          return 'text_' + _id;
                      }
                  }
              }
docs: A mapping of element ids to nodeList id allowing us to quickly find an element that needs to be replaced when updated.