<!--- This environment context section helps us quickly review your PR. 
      Please take a minute to fill-out this information. -->


## Environment
**Liquibase Version**: 4.4.0

**Liquibase Integration & Version**: Quarkus

**Liquibase Extension(s) & Version**: 

**Database Vendor & Version**: H2

**Operating System Type & Version**: Fedora

## Description
I have noticed a large performance degradation between 4.4.0 and 4.3.5. When running the test for https://github.com/jhipster/jhipster-sample-app-quarkus using version 4.4.0 instead of 4.3.5 adds around 90s to the total testsuite runtime.

This appears to be due to `liquibase.configuration.pro.EnvironmentValueProvider` it seems to be used a lot to look for:

[liquibase.filterLogMessages]
[liquibase.pro.licenseKey]
[liquibase.hub.apiKey]

these same values are looked up repeatedly, and the iteration over all the env vars and then calling `StringUtil.toKabobCase` ends up being really expensive.

## Steps To Reproduce
Build build and test https://github.com/jhipster/jhipster-sample-app-quarkus, note the total build time, change to version 4.4.0 and build, locally I see an extra 2m total time.

## Actual Behavior
It is much slower than it used to be.

## Expected/Desired Behavior
Performance will be comparable to 4.3.5


} else {
            return returnString;
        }
    }
    /**
     *
     * Removes any comments from multiple line SQL using {@link #stripComments(String)}
     *  and then extracts each individual statement using {@link #splitSQL(String, String)}.
     *
     * @param multiLineSQL A String containing all the SQL statements
     * @param stripComments If true then comments will be stripped, if false then they will be left in the code
     *
     */
    public static String[] processMultiLineSQL(String multiLineSQL, boolean stripComments, boolean splitStatements, String endDelimiter) {
        StringClauses parsed = SqlParser.parse(multiLineSQL, true, !stripComments);
        List<String> returnArray = new ArrayList<>();
        StringBuilder currentString = new StringBuilder();
        String previousPiece = null;
        boolean previousDelimiter = false;
        List<Object> parsedArray = Arrays.asList(parsed.toArray(true));
        for (Object piece : mergeTokens(parsedArray, endDelimiter)) {
            if (splitStatements && (piece instanceof String) && isDelimiter((String) piece, previousPiece, endDelimiter)) {
                String trimmedString = StringUtil.trimToNull(currentString.toString());
                if (trimmedString != null) {
                    returnArray.add(trimmedString);
                }
                currentString = new StringBuilder();
                previousDelimiter = true;
            } else {
                if (!previousDelimiter || (StringUtil.trimToNull((String) piece) != null)) {