docs: function intersect() {
      for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
        args[_key2] = arguments[_key2];
      }
  
      return multiArrayMacro(args, function (dependentKeys) {
        var _this3 = this;
  
        var arrays = dependentKeys.map(function (dependentKey) {
          var array = _emberMetalProperty_get.get(_this3, dependentKey);
  
          return _emberRuntimeUtils.isArray(array) ? array : [];
        });
  
        var results = arrays.pop().filter(function (candidate) {
          for (var i = 0; i < arrays.length; i++) {
            var found = false;
            var array = arrays[i];
            for (var j = 0; j < array.length; j++) {
              if (array[j] === candidate) {
                found = true;
                break;
              }
            }
  
            if (found === false) {
              return false;
            }
          }
  
          return true;
        });
  
        return _emberRuntimeSystemNative_array.A(results);
      });
    }