code: function (name, args, bubble) {
          var self = this;
  
          // Prevent all events except the remove event after the instance has been removed
          if (self.removed && name !== "remove") {
            return args;
          }
  
          args = getEventDispatcher(self).fire(name, args, bubble);
  
          // Bubble event up to parents
          if (bubble !== false && self.parent) {
            var parent = self.parent();
            while (parent && !args.isPropagationStopped()) {
              parent.fire(name, args, false);
              parent = parent.parent();
            }
          }
  
          return args;
        }
docs: Fires the specified event by name. Consult the
  <a href="/docs/advanced/events">event reference</a> for more details on each event.
  
  @method fire
  @param {String} name Name of the event to fire.
  @param {Object?} args Event arguments.
  @param {Boolean?} bubble True/false if the event is to be bubbled.
  @return {Object} Event args instance passed in.
  @example
  instance.fire('event', {...});