code: public static <T extends GenericEvent> GenericEventType getTypeOf(Class<T> clazz) {
      
      GenericEventType eventType = TYPE_MAP.get(clazz);
      
      if (eventType == null) {
        eventType = new GenericEventType();
        TYPE_MAP.put(clazz, eventType);
      }
      
      return eventType;
    }
docs: Creates a new EventType for the given event class. Repeated invocations of
  this method for the same type will return the same object. This method is
  called by generated {@link EventBinder}s and shouldn't normally have to be
  called directly by users.