code: function(models, options) {
          options = options || {};
          base.call(this, models, options);
          this.isRequester = options.isRequester;
          this.parentInstance = options.parentInstance;
          if (!this.isRequester) {
            this.requestMap = {};
            this.collectionTrackedIds = [];
            this.knownPrivateCollections = {};
            this.idPromises = {};
            var cacheDefaults = _.defaults(
              _.pick(options, 'getByIdsUrl', 'fetchHttpAction', 'fetchUsingTrackedIds'),
              _.pick(this, 'getByIdsUrl', 'fetchHttpAction', 'fetchUsingTrackedIds'),
              {
                getByIdsUrl: '/ids',
                fetchHttpAction: 'GET',
                fetchUsingTrackedIds: true
              }
            );
            _.extend(this, cacheDefaults);
            cacheMixin(this);
          } else {
            this.trackedIds = [];
            this.listenTo(this.parentInstance, 'load-begin', function() {
              this.trigger('cache-load-begin');
            });
            this.listenTo(this.parentInstance, 'load-complete', function() {
              this.trigger('cache-load-complete');
            });
          }
        }
docs: The constructor constructor / initialize method for collections.
  Allocate new memory for the local references if they
  were null when this method was called.
  @param [options] {Object} - optional options object
  @param   [options.fetchHttpAction='POST'] {String} http action used to get objects by ids
  @param   [options.getByIdsUrl='/ids'] {String} path appended to collection.url to get objects by a list of ids
  @param   [options.fetchUsingTrackedIds=true] {Boolean} if set to false, cache.fetch() will not pass to fetchByIds with current tracked ids
  but will rather call the default fetch method.
  @method constructor