docs: function uniq() {
        var args = a_slice.call(arguments);
  
        args.push({
          initialize: function(array, changeMeta, instanceMeta) {
            instanceMeta.itemCounts = {};
          },
  
          addedItem: function(array, item, changeMeta, instanceMeta) {
            var guid = guidFor(item);
  
            if (!instanceMeta.itemCounts[guid]) {
              instanceMeta.itemCounts[guid] = 1;
              array.pushObject(item);
            } else {
              ++instanceMeta.itemCounts[guid];
            }
            return array;
          },
  
          removedItem: function(array, item, _, instanceMeta) {
            var guid = guidFor(item);
            var itemCounts = instanceMeta.itemCounts;
  
            if (--itemCounts[guid] === 0) {
              array.removeObject(item);
            }
  
            return array;
          }
        });
  
        return arrayComputed.apply(null, args);
      }