@Nonnull
    @SafeVarargs
    static <S extends Event> MergedSubscriptionBuilder<S> newBuilder(@Nonnull Class<S> superClass, @Nonnull EventPriority priority, @Nonnull Class<? extends S>... eventClasses) {
        Objects.requireNonNull(superClass, "superClass");
        Objects.requireNonNull(eventClasses, "eventClasses");
        Objects.requireNonNull(priority, "priority");
        if (eventClasses.length < 2) {
            throw new IllegalArgumentException("merge method used for only one subclass");
        }

        MergedSubscriptionBuilderImpl<S> h = new MergedSubscriptionBuilderImpl<>(TypeToken.of(superClass));
        for (Class<? extends S> clazz : eventClasses) {
            h.bindEvent(clazz, priority, e -> e);
        }
        return h;
    }
Makes a MergedHandlerBuilder for a super event class

@param superClass   the abstract super event class
@param priority     the priority to listen at
@param eventClasses the event classes to be bound to
@param <S>          the super class type
@return a {@link MergedSubscriptionBuilder} to construct the event handler
helper/src/main/java/me/lucko/helper/event/functional/merged/MergedSubscriptionBuilder.java