code: public String getEventType() {
          if (cachedEventName != null) {
              return cachedEventName;
          }
          Class<E> clazz = getEventClass();
          try {
              Field field = clazz.getField("TYPE_NAME");
              field.setAccessible(true);
              cachedEventName = (String) field.get(null);
              return cachedEventName;
          } catch (Exception e) {
              throw new IllegalStateException("A static field TYPE_NAME in " + clazz.getCanonicalName() + " is required");
          }
      }
docs: Returns the type value of the event (e.g., MessageEvent.TYPE_NAME)