code: public synchronized void fireEvent(Event evt) {
  		if (evt == null) {
  			return;
  		}
  
  		// Process global listeners
  		for (Enumeration<EventListener> keys = globalListeners.elements(); keys
  				.hasMoreElements();) {
  			EventListener mListener = keys.nextElement();
  			try {
  				mListener.processEvent(evt);
  			} catch (Throwable t) {
  			}
  		}
  
  		String sourceThread = Thread.currentThread().getName();
  
  		for (Enumeration<String> keys = keyedListeners.keys(); keys
  				.hasMoreElements();) {
  			String key = (String) keys.nextElement();
  			// We don't want badly behaved listeners to throw uncaught
  			// exceptions and upset other listeners
  			try {
  				String prefix = "";
  				if (sourceThread.indexOf('-') > -1) {
  					prefix = sourceThread.substring(0,
  							sourceThread.indexOf('-'));
  
  					if (key.startsWith(prefix)) {
  						EventListener mListener = keyedListeners.get(key);
  						mListener.processEvent(evt);
  					}
  				}
  
  			} catch (Throwable thr) {
  				// log.error("Event failed.", thr);
  			}
  		}
  	}
docs: Send an SSH Event to each registered listener