public synchronized <T extends Throwable> @This @NonNull ExceptionController<C> register(
            final @NonNull ExceptionHandlerRegistration<C, ? extends T> registration
    ) {
        this.registrations.computeIfAbsent(registration.exceptionType().getType(), t -> new LinkedList<>())
                .addFirst(registration);
        return this;
    }
Registers the given {@code registration}.
<p>
The ordering matters when multiple handlers are registered for the same exception type.
The last registered handler will get priority.

@param <T>          the exception type handled by the exception handler
@param registration the exception handler registration
@return {@code this} exception controller
cloud-core/src/main/java/org/incendo/cloud/exception/handling/ExceptionController.java