public Optional<Argument> findFor(final QualifiedType<?> type, final Object value) {
        final Function<Object, Argument> prepared = preparedFactories.get(type);
        if (prepared != null) {
            return Optional.of(prepared.apply(value));
        }
        for (final QualifiedArgumentFactory factory : factories) {
            final Optional<Argument> maybeBuilt = factory.build(type, value, registry);
            if (maybeBuilt.isPresent()) {
                if (factory instanceof QualifiedArgumentFactory.Preparable && didPrepare.add(type)) {
                    ((QualifiedArgumentFactory.Preparable) factory).prepare(type, registry)
                            .ifPresent(argumentFactory -> preparedFactories.putIfAbsent(type, argumentFactory));
                }
                return maybeBuilt;
            }
        }
        return Optional.empty();
    }
Obtain an argument for given value in the given context.

@param type  the qualified type of the argument.
@param value the argument value.
@return an Argument for the given value.
core/src/main/java/org/jdbi/v3/core/argument/Arguments.java