docs: function get(obj, keyName) {
        // Helpers that operate with 'this' within an #each
        if (keyName === '') {
          return obj;
        }
  
        if (!keyName && 'string' === typeof obj) {
          keyName = obj;
          obj = null;
        }
  
        Ember.assert("Cannot call get with "+ keyName +" key.", !!keyName);
        Ember.assert("Cannot call get with '"+ keyName +"' on an undefined object.", obj !== undefined);
  
        if (obj === null) {
          var value = _getPath(obj, keyName);
          Ember.deprecate(
            "Ember.get fetched '"+keyName+"' from the global context. This behavior will change in the future (issue #3852)",
            !value || (obj && obj !== Ember.lookup) || isPath(keyName) || isGlobalPath(keyName+".") // Add a . to ensure simple paths are matched.
          );
          return value;
        }
  
        var meta = obj['__ember_meta__'];
        var desc = meta && meta.descs[keyName];
        var ret;
  
        if (desc === undefined && isPath(keyName)) {
          return _getPath(obj, keyName);
        }
  
        if (desc) {
          return desc.get(obj, keyName);
        } else {
          
            if (hasPropertyAccessors && meta && meta.watching[keyName] > 0) {
              ret = meta.values[keyName];
            } else {
              ret = obj[keyName];
            }
          
          if (ret === undefined &&
              'object' === typeof obj && !(keyName in obj) && 'function' === typeof obj.unknownProperty) {
            return obj.unknownProperty(keyName);
          }
  
          return ret;
        }
      }