// Path: XServer-API/src/main/java/de/mickare/xserver/events/XServerEvent.java
// public class XServerEvent {
// 
//   private final String text;
// 
//   public XServerEvent() {
//     text = "";
//   }
// 
//   public XServerEvent(String text) {
//     this.text = text;
//   }
// 
//   public String getText() {
//     return text;
//   }
// 
//   public void postCall() {
// 
//   }
// 
//   public String getChannel() {
//     return "";
//   }
// 
// }


import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level;
import de.mickare.xserver.events.XServerEvent;
  @Override
  public synchronized void unregisterAll(XServerListenerPlugin<T> plugin) {
    for (Entry<XServerListener, XServerListenerPlugin<T>> e : new HashSet<Entry<XServerListener, XServerListenerPlugin<T>>>(
        listeners.entrySet())) {
      if (e.getValue() == plugin) {
        bus.unregister(e.getKey());
        listeners.remove(e.getKey());
      }
    }
  }

  /*
   * (non-Javadoc)
   *
   * @see de.mickare.xserver.EventHandler#unregisterAll()
   */
  @Override
  public synchronized void unregisterAll() {
    for (XServerListener lis : listeners.keySet()) {
      bus.unregister(lis);
    }
    listeners.clear();
  }

  /*
   * (non-Javadoc)
   *
   * @see de.mickare.xserver.EventHandler#callEvent(de.mickare.xserver.events.XServerEvent)
   */
  @Override
// Path: XServer-API/src/main/java/de/mickare/xserver/events/XServerEvent.java
// public class XServerEvent {
// 
//   private final String text;
// 
//   public XServerEvent() {
//     text = "";
//   }
// 
//   public XServerEvent(String text) {
//     this.text = text;
//   }
// 
//   public String getText() {
//     return text;
//   }
// 
//   public void postCall() {
// 
//   }
// 
//   public String getChannel() {
//     return "";
//   }
// 
// }


// Path: XServer-Core/src/main/java/de/mickare/xserver/EventHandlerObj.java
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Level;
import de.mickare.xserver.events.XServerEvent;

  @Override
  public synchronized void unregisterAll(XServerListenerPlugin<T> plugin) {
    for (Entry<XServerListener, XServerListenerPlugin<T>> e : new HashSet<Entry<XServerListener, XServerListenerPlugin<T>>>(
        listeners.entrySet())) {
      if (e.getValue() == plugin) {
        bus.unregister(e.getKey());
        listeners.remove(e.getKey());
      }
    }
  }

  /*
   * (non-Javadoc)
   *
   * @see de.mickare.xserver.EventHandler#unregisterAll()
   */
  @Override
  public synchronized void unregisterAll() {
    for (XServerListener lis : listeners.keySet()) {
      bus.unregister(lis);
    }
    listeners.clear();
  }

  /*
   * (non-Javadoc)
   *
   * @see de.mickare.xserver.EventHandler#callEvent(de.mickare.xserver.events.XServerEvent)
   */
  @Override
  public XServerEvent callEvent(final XServerEvent event) {