public PyObject custom_event(PyType event) {
    Class<?> proxy = event.getProxyType();

    if (Event.class.isAssignableFrom(proxy)) {
      // add the stupid handler list attribute and get handler list method
      // which the bukkit team could not add themselves for some strange reason
      //            event.__setattr__("handlerList", Py.java2py(new HandlerList()));
      //            ((PyType)event.getBase()).addMethod(new
      // PyBuiltinClassMethodNarrow("getHandlerList", 0, 0) {
      //                @Override
      //                public PyObject __call__() {
      //                    return self.__getattr__("handlerList");
      //                }
      //            });
      //            event.addMethod(new PyBuiltinClassMethodNarrow("getHandlers", 0, 0) {
      //                @Override
      //                public PyObject __call__() {
      //                    return self.__getattr__("handlerList");
      //                }
      //            });

      customEvents.put(event.getName(), (Class<? extends Event>) proxy);
    } else {
      throw new IllegalArgumentException(
          "Tried to register a custom Event which does not extend Event");
    }

    return event;
  }