docs: function MediaObject(){
    MediaObject.super_.call(this);
  
  
    var self = this;
  
  
    //
    // Define object properties
    //
  
    /**
     * Unique identifier of this object
     *
     * @public
     * @readonly
     * @member {external:Number} id
     */
    this.once('_id', function(error, id)
    {
      if(error)
        return Object.defineProperties(this,
        {
          '_createError': {value: error},
          'id': {value: null, enumerable: true}
        });
  
      Object.defineProperty(this, 'id',
      {
        configurable: true,
        enumerable: true,
        value: id
      });
    })
  
    //
    // Subscribe and unsubscribe events on the server when adding and removing
    // event listeners on this MediaObject
    //
  
    var subscriptions = {};
  
    this.on('removeListener', function(event, listener)
    {
      // Blacklisted events
      if(event[0] == '_'
      || event == 'release'
      || event == 'newListener')
        return;
  
      var count = EventEmitter.listenerCount(this, event);
      if(count) return;
  
      var token = subscriptions[event];
  
      var params =
      {
        object: this,
        subscription: token
      };
  
      this.emit('_rpc', undefined, 'unsubscribe', params, function(error)
      {
        if(error) return self.emit('error', error);
  
        delete subscriptions[event];
      });
    });
  
    this.on('newListener', function(event, listener)
    {
      // Blacklisted events
      if(event[0] == '_'
      || event == 'release')
        return;
  
      var constructor = this.constructor;
  
      if(constructor.events.indexOf(event) < 0)
        throw new SyntaxError(constructor.name+" doesn't accept events of type '"+event+"'")
  
      var count = EventEmitter.listenerCount(this, event);
      if(count) return;
  
      var params =
      {
        object: this,
        type: event
      };
  
      this.emit('_rpc', undefined, 'subscribe', params, function(error, token)
      {
        if(error) return self.emit('error', error);
  
        subscriptions[event] = token;
      });
    });
  }