code: function(type, model={}, collection={}, options={}){
      var shortcircuit = { sort: 1, request: 1, destroy: 1, sync: 1, error: 1, invalid: 1, route: 1 };
      if( this.isChanging || !this.tracking || shortcircuit[type] || ~type.indexOf('change:') ){ return void 0; }
      !collection.isData && _.isObject(collection) && (options = collection) && (collection = model);
  
      var path = collection.__path().replace(this.__path(), '').replace(/^\./, '');
  
      // Need to pass isPath: true here because when syncing across computed properties
      // that return collections we may just be passing the model index for the path.
      var dest = this.tracking.get(path, {raw: true, isPath: true});
  
      if(_.isUndefined(dest)){ return void 0; }
      if(type === 'change' && model.changedAttributes()){ dest.set && dest.set(model.changedAttributes()); }
      else if(type === 'reset'){ dest.reset && dest.reset(model); }
      else if(type === 'update'){ dest.set && dest.set(model); }
      else if(type === 'add'){ dest.add && dest.add(model); }
      else if(type === 'remove'){ dest.remove && dest.remove(model); }
      // TODO: Add sort
  
    }
docs: Called when a Computed Property's active cache object changes. Pushes any changes to Computed Property that returns a data object back to the original object. TODO: Will be a hair faster with individual callbacks for each event type