@Override
    public @Nullable Object handle(final @NonNull InjectionRequest<C> request) {
        for (final ParameterInjector<C, ?> injector : this.injectors(request.injectedType())) {
            final Object value = injector.create(request.commandContext(), request.annotationAccessor());
            if (value != null) {
                return value;
            }
        }
        return null;
    }
Registers an injector for a particular type predicate.

<p>The predicate should only
return true if the injected type is assignable to the tested type. This predicate overload
is provided in addition to {@link #registerInjector(Class, ParameterInjector)} to allow
for exact, non-exact, or custom predicates, however is still bound by the aforementioned constraint.
Failure to adhere to this will result in runtime exceptions.</p>

@param <T>       injected type
@param predicate a predicate that matches if the injector should be used for a type
@param injector  the injector that should inject the value into the command method
@return {@code this}
cloud-core/src/main/java/org/incendo/cloud/injection/ParameterInjectorRegistry.java