docs: function (obj) {
        _emberMetalDebug.assert('Must pass a valid object to Ember.Binding.connect()', !!obj);
  
        var fromObj = undefined,
            fromPath = undefined;
  
        // If the binding's "from" path could be interpreted as a global, verify
        // whether the path refers to a global or not by consulting `Ember.lookup`.
        if (_emberMetalPath_cache.isGlobalPath(this._from)) {
          var _name = _emberMetalPath_cache.getFirstKey(this._from);
          var possibleGlobal = _emberEnvironment.context.lookup[_name];
  
          if (possibleGlobal) {
            fromObj = possibleGlobal;
            fromPath = _emberMetalPath_cache.getTailPath(this._from);
          }
        }
  
        if (fromObj === undefined) {
          fromObj = obj;
          fromPath = this._from;
        }
  
        _emberMetalProperty_set.trySet(obj, this._to, _emberMetalProperty_get.get(fromObj, fromPath));
  
        // Add an observer on the object to be notified when the binding should be updated.
        _emberMetalObserver.addObserver(fromObj, fromPath, this, 'fromDidChange');
  
        // If the binding is a two-way binding, also set up an observer on the target.
        if (!this._oneWay) {
          _emberMetalObserver.addObserver(obj, this._to, this, 'toDidChange');
        }
  
        _emberMetalEvents.addListener(obj, 'willDestroy', this, 'disconnect');
  
        this._readyToSync = true;
        this._fromObj = fromObj;
        this._fromPath = fromPath;
        this._toObj = obj;
  
        return this;
      }