code: function normalizeTuple(target, path) {
        var hasThis  = pathHasThis(path);
        var isGlobal = !hasThis && isGlobalPath(path);
        var key;
  
        if (!target || isGlobal) target = Ember.lookup;
        if (hasThis) path = path.slice(5);
  
        Ember.deprecate(
          "normalizeTuple will return '"+path+"' as a non-global. This behavior will change in the future (issue #3852)",
          target === Ember.lookup || !target || hasThis || isGlobal || !isGlobalPath(path+'.')
        );
  
        if (target === Ember.lookup) {
          key = path.match(FIRST_KEY)[0];
          target = get(target, key);
          path   = path.slice(key.length+1);
        }
  
        // must return some kind of path to be valid else other things will break.
        if (!path || path.length===0) throw new EmberError('Path cannot be empty');
  
        return [ target, path ];
      }
docs: Normalizes a target/path pair to reflect that actual target/path that should
  be observed, etc. This takes into account passing in global property
  paths (i.e. a path beginning with a captial letter not defined on the
  target).
  
  @private
  @method normalizeTuple
  @for Ember
  @param {Object} target The current target. May be `null`.
  @param {String} path A path on the target or a global property path.
  @return {Array} a temporary array with the normalized target/path pair.