code: function (eventName, argsArray) {
  				if (RUNTIME_CHECKS) {
  					if (typeof eventName !== 'string') {
  						throw '"eventName" argument must be a string';
  					}
  					if (arguments.length > 1 && (!argsArray || argsArray.length === undefined)) {
  						throw '"argsArray" must have a length property';
  					}
  				}
  
  				if (!this.__private || !this.__private.listeners) { return; }
  
  				var listenersForEvent = this.__private.listeners[eventName];
  				if (!listenersForEvent) { return; }
  
  				for (var i = 0, n = listenersForEvent.length; i < n; ++i) {
  					listenersForEvent[i].apply(undefined, argsArray);
  				}
  			}
docs: Emit an event. Callbacks will be called with arguments given as an an array in the second argument
  @instance
  @arg {string} eventName - Identifier string for the event.
  @arg {Array} [argsArray] - An array of arguments with which the callbacks will be called. Each item in
  the array will be provided as an individual argument to the callbacks.