docs: function get(obj, keyName) {
      _emberMetalDebug.assert('Get must be called with two arguments; an object and a property key', arguments.length === 2);
      _emberMetalDebug.assert('Cannot call get with \'' + keyName + '\' on an undefined object.', obj !== undefined && obj !== null);
      _emberMetalDebug.assert('The key provided to get must be a string, you passed ' + keyName, typeof keyName === 'string');
      _emberMetalDebug.assert('\'this\' in paths is not supported', !_emberMetalPath_cache.hasThis(keyName));
  
      // Helpers that operate with 'this' within an #each
      if (keyName === '') {
        return obj;
      }
  
      var value = obj[keyName];
      var desc = value !== null && typeof value === 'object' && value.isDescriptor ? value : undefined;
      var ret;
  
      if (desc === undefined && _emberMetalPath_cache.isPath(keyName)) {
        return _getPath(obj, keyName);
      }
  
      if (desc) {
        return desc.get(obj, keyName);
      } else {
        ret = value;
  
        if (ret === undefined && 'object' === typeof obj && !(keyName in obj) && 'function' === typeof obj.unknownProperty) {
          return obj.unknownProperty(keyName);
        }
  
        return ret;
      }
    }