code: function off(eventsInput, callback)
    {
      // Remove ALL listeners
      if ( !isDefined( eventsInput ) )
      {
        deleteProperty( this, '$$on' );
      }
      else
      {
        var events = toArray( eventsInput, ' ' );
  
        // Remove listeners for given events
        if ( !isFunction( callback ) )
        {
          for (var i = 0; i < events.length; i++)
          {
            deleteProperty( this.$$on, events[i] );
          }
        }
        // Remove specific listener
        else
        {
          for (var i = 0; i < events.length; i++)
          {
            offListeners( this.$$on, events[i], callback );
          }
        }
      }
  
      return this;
    }
docs: Stops listening for a given callback for a given set of events.
  
  **Examples:**
  
  target.off();           // remove all listeners
  target.off('a b');      // remove all listeners on events a & b
  target.off(['a', 'b']); // remove all listeners on events a & b
  target.off('a', x);     // remove listener x from event a
  
  @method off
  @for addEventful
  @param {String|Array|Object} [eventsInput]
  @param {Function} [callback]
  @chainable