public static void ListenOnceForOne(this IEventDispatcher dispatcher, object returnEvent, EmptyCallback callback)
    {
        EmptyCallback intermediary = null;

        intermediary =
            () => {
            dispatcher.RemoveListener(returnEvent, intermediary);
            callback.Invoke();
        };
        dispatcher.AddListener(returnEvent, intermediary);
    }
 public override void Callback(IEvent evt)
 {
     callback.Invoke();
 }
 public override void Callback(object[] xs)
 {
     callback.Invoke();
 }