private NamedArgumentFinder getValueNested(TypedValue typedValue, String parentName, String childName) {
        if (Objects.nonNull(typedValue.getValue())) {
            return getNestedArgumentFinder(typedValue);
        }
        if (parentName.endsWith("?")) {
            return (n, c) -> Optional.of(c.getConfig(Arguments.class).getUntypedNullArgument());
        }
        throw new IllegalArgumentException(
            String.format("Trying to bind nested argument [%s], but found null value at [%s], may mark it as an optional with [%s]",
                childName,
                parentName,
                parentName + '?'));
    }
@param prefix an optional prefix (we insert a '.' as a separator)
@param obj the object bind on
core/src/main/java/org/jdbi/v3/core/argument/internal/ObjectPropertyNamedArgumentFinder.java