docs: function intersect() {
        var args = a_slice.call(arguments);
  
        args.push({
          initialize: function (array, changeMeta, instanceMeta) {
            instanceMeta.itemCounts = {};
          },
  
          addedItem: function(array, item, changeMeta, instanceMeta) {
            var itemGuid = guidFor(item);
            var dependentGuid = guidFor(changeMeta.arrayChanged);
            var numberOfDependentArrays = changeMeta.property._dependentKeys.length;
            var itemCounts = instanceMeta.itemCounts;
  
            if (!itemCounts[itemGuid]) {
              itemCounts[itemGuid] = {};
            }
  
            if (itemCounts[itemGuid][dependentGuid] === undefined) {
              itemCounts[itemGuid][dependentGuid] = 0;
            }
  
            if (++itemCounts[itemGuid][dependentGuid] === 1 &&
                numberOfDependentArrays === keys(itemCounts[itemGuid]).length) {
              array.addObject(item);
            }
  
            return array;
          },
  
          removedItem: function(array, item, changeMeta, instanceMeta) {
            var itemGuid = guidFor(item);
            var dependentGuid = guidFor(changeMeta.arrayChanged);
            var numberOfDependentArrays = changeMeta.property._dependentKeys.length;
            var numberOfArraysItemAppearsIn;
            var itemCounts = instanceMeta.itemCounts;
  
            if (itemCounts[itemGuid][dependentGuid] === undefined) {
              itemCounts[itemGuid][dependentGuid] = 0;
            }
  
            if (--itemCounts[itemGuid][dependentGuid] === 0) {
              delete itemCounts[itemGuid][dependentGuid];
              numberOfArraysItemAppearsIn = keys(itemCounts[itemGuid]).length;
  
              if (numberOfArraysItemAppearsIn === 0) {
                delete itemCounts[itemGuid];
              }
  
              array.removeObject(item);
            }
  
            return array;
          }
        });
  
        return arrayComputed.apply(null, args);
      }