docs: @SuppressWarnings("unchecked")
  	public synchronized <T extends SebEvent> T constructEvent(Class<T> eventCls, SebContext context) {
  		try {
  			return (T) eventCls.getConstructor().newInstance().with(context, LocalDateTime.now());
  		} catch (Exception e) {
  			throw new EventConstructException("Unable to construct event " + eventCls.getName(), e);
  		}
  	}