code: function ensureObservers(obj, options) {
    if (!obj.computedObservers) {
      Object.defineProperty(obj, 'computedObservers', { value: [] });
      obj.computedObservers.enabled = (!options || options.enabled !== false);
  
      // Restarts observing changes
      obj.computedObservers.enable = function() {
        if (!this.enabled) {
          this.enabled = true;
          this.forEach(function(observer) {
            observer.bind(options && options.context || obj);
          });
        }
      };
  
      // Stops observing changes and resets all computed properties to undefined
      obj.computedObservers.disable = function() {
        if (this.enabled) {
          this.enabled = false;
          this.forEach(function(observer) {
            observer.unbind();
            observer.sync();
          });
        }
      };
    }
    return obj;
  }
docs: Ensures the observers array exists on an object, creating it if not and adding disable/enable functions to enable and
  disable observing.
  @param {Object} obj The object which ought to have an observers array on it
  @param {Object} options Options for this computed object:
  * enabled {Boolean} Whether to enable this computed object. Default is true.
  @return {Object} The `obj` that was passed in