docs: function _beforeObserver() {
      for (var _len5 = arguments.length, args = Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
        args[_key5] = arguments[_key5];
      }
  
      var func = args.slice(-1)[0];
      var paths;
  
      var addWatchedProperty = function (path) {
        paths.push(path);
      };
  
      var _paths = args.slice(0, -1);
  
      if (typeof func !== 'function') {
        // revert to old, soft-deprecated argument ordering
  
        func = args[0];
        _paths = args.slice(1);
      }
  
      paths = [];
  
      for (var i = 0; i < _paths.length; ++i) {
        _emberMetalExpand_properties.default(_paths[i], addWatchedProperty);
      }
  
      if (typeof func !== 'function') {
        throw new _emberMetalCore.default.Error('Ember.beforeObserver called without a function');
      }
  
      func.__ember_observesBefore__ = paths;
      return func;
    }