code: public synchronized void fire(T event) {
  		if (occured) throw new IllegalStateException("SingleEvent already fired");
  		occured = true;
  		data = event;
  		if (listeners != null) {
  			for (Listener<T> listener : listeners)
  				listener.fire(event);
  			listeners = null;
  		}
  		if (listenersRunnable != null) {
  			for (Runnable listener : listenersRunnable)
  				listener.run();
  			listenersRunnable = null;
  		}
  	}
docs: Fire the event.
  @throws IllegalStateException if the event has been already fired.