private static Map<String, Function<Object, TypedValue>> load(ConfigRegistry config, Class<?> type) {
        final HashMap<String, Function<Object, TypedValue>> methodMap = new HashMap<>();
        if (Modifier.isPublic(type.getModifiers())) {
            Arrays.stream(type.getMethods())
                .filter(m -> m.getParameterCount() == 0)
                .filter(JdbiAnnotations::isBound)
                .collect(Collectors.toMap(
                        Method::getName,
                        Function.identity(),
                        ObjectMethodArguments::bridgeMethodMerge))
                .forEach((name, method) -> {
                    QualifiedType<?> qualifiedType = QualifiedType.of(method.getGenericReturnType())
                            .withAnnotations(config.get(Qualifiers.class).findFor(method));
                    MethodHandle mh = Unchecked.function(MethodHandles.lookup()::unreflect).apply(method);
                    methodMap.put(name, Unchecked.function(
                            value -> new TypedValue(qualifiedType, mh.invoke(value))));
                });
        } else {
            Optional.ofNullable(type.getSuperclass()).ifPresent(superclass -> methodMap.putAll(load(config, superclass)));
            Arrays.stream(type.getInterfaces()).forEach(interfaceClass -> methodMap.putAll(load(config, interfaceClass)));
        }
        return methodMap;
    }
@param prefix an optional prefix (we insert a '.' as a separator)
@param object the object to bind functions on
core/src/main/java/org/jdbi/v3/core/argument/ObjectMethodArguments.java