code: function (key, howMany) {
                      // first add in all the new items if we have any, this should serve to push key to the right
                      if (arguments.length > 2) {
                          var args = copyargs(arguments);
                          args[1] = 0; // howMany
                          this._list._spliceFromKey.apply(this._list, args);
                      }
                      // now we can remove anything that needs to be removed, since they are not necessarially contiguous
                      // in the underlying list we remove them one by one.
                      var result = [];
                      if (howMany) {
                          var keysToRemove = [];
                          var filteredKeys = this._filteredKeys;
                          var filteredKeyIndex = filteredKeys.indexOf(key);
                          for (var i = filteredKeyIndex, len = filteredKeys.length; i < len && (i - filteredKeyIndex) < howMany; i++) {
                              var key = filteredKeys[i];
                              keysToRemove.push(key);
                          }
                          var that = this;
                          keysToRemove.forEach(function (key) {
                              result.push(that._list._spliceFromKey(key, 1)[0]);
                          });
                      }
                      return result;
                  }
docs: returns [ data* ] of removed items