docs: function (target, opts) {
        var willChange = opts && opts.willChange || 'enumerableWillChange';
        var didChange = opts && opts.didChange || 'enumerableDidChange';
        var hasObservers = _emberMetalProperty_get.get(this, 'hasEnumerableObservers');
  
        if (!hasObservers) {
          _emberMetalProperty_events.propertyWillChange(this, 'hasEnumerableObservers');
        }
  
        _emberMetalEvents.addListener(this, '@enumerable:before', target, willChange);
        _emberMetalEvents.addListener(this, '@enumerable:change', target, didChange);
  
        if (!hasObservers) {
          _emberMetalProperty_events.propertyDidChange(this, 'hasEnumerableObservers');
        }
  
        return this;
      }