public void removeHandler(Handler<? extends S, ? extends T> handler) {

    handlers = (Handler<S, T>[]) ArrayUtils.remove(handlers, handler);
  }
  public void addHandler(Handler<? extends S, ? extends T> handler) {

    if (handler == null) throw new IllegalArgumentException("handler == null");

    handlers = (Handler<S, T>[]) ArrayUtils.add(handlers, handler);
  }