docs: function(ev, items, index, duringTeardown, fullTeardown) {
                          // If this is because an element was removed, we should
                          // check to make sure the live elements are still in the page.
                          // If we did this during a teardown, it would cause an infinite loop.
                          if (!duringTeardown && data.teardownCheck(text.parentNode)) {
                              return;
                          }
                          var removedMappings = masterNodeList.splice(index + 1, items.length),
                              itemsToRemove = [];
                          can.each(removedMappings, function(nodeList) {
  
                              // Unregister to free up event bindings.
                              var nodesToRemove = nodeLists.unregister(nodeList);
  
                              // add items that we will remove all at once
                              [].push.apply(itemsToRemove, nodesToRemove);
                          });
                          // update indices after remove point
                          indexMap.splice(index, items.length);
                          for (var i = index, len = indexMap.length; i < len; i++) {
                              indexMap[i](i);
                          }
                          // don't remove elements during teardown.  Something else will probably be doing that.
                          if (!fullTeardown) {
                              can.remove(can.$(itemsToRemove));
                          }
  
                      }