public static Optional<String> getAnnotationValue(Method method, Function<String, String> transformation) {
        return JdbiOptionals.findFirstPresent(
            () -> Optional.ofNullable(method.getAnnotation(SqlBatch.class))
                .map(SqlBatch::value)
                .map(transformation),

            () -> Optional.ofNullable(method.getAnnotation(SqlCall.class))
                .map(SqlCall::value)
                .map(transformation),

            () -> Optional.ofNullable(method.getAnnotation(SqlQuery.class))
                .map(SqlQuery::value)
                .map(transformation),

            () -> Optional.ofNullable(method.getAnnotation(SqlUpdate.class))
                .map(SqlUpdate::value)
                .map(transformation),

            () -> Optional.ofNullable(method.getAnnotation(SqlScripts.class))
                .map(SqlScripts::value)
                .map(scripts -> Arrays.stream(scripts)
                    .map(SqlScript::value)
                    .map(transformation)
                    .collect(Collectors.joining(" ; "))),

            () -> Optional.ofNullable(method.getAnnotation(SqlScript.class))
                .map(SqlScript::value)
                .map(transformation)
        );
    }
Returns the <code>value()</code> of the <code>@SqlBatch</code>, <code>@SqlCall</code>, <code>@SqlQuery</code>,
<code>@SqlUpdate</code>, <code>@SqlScripts</code>, or <code>@SqlScript</code> annotation on the given method if declared; empty otherwise.

Note: <code>@SqlScripts</code> values are mapped individually and concatenated with {@code " ; "}, hence the transformation parameter.

@param method the method
@param transformation the String transformation (e.g. SQL lookup) to apply to the found value(s)
@return the annotation <code>value()</code>
sqlobject/src/main/java/org/jdbi/v3/sqlobject/internal/SqlAnnotations.java