private boolean doMatch(String columnName, String propertyName, boolean columnNameMayTrailCharacters) {
        int cPos = 0;
        int pPos = 0;

        for (;;) {
            boolean cEnded = cPos >= columnName.length();
            boolean pEnded = pPos >= propertyName.length();

            if (cEnded || pEnded) {
                // javaname must have ended. (prefix match give only prefix)
                // column name must end for full match but may trail characters for
                // prefix matches.
                return pEnded && (cEnded || columnNameMayTrailCharacters);
            }

            char pChar = propertyName.charAt(pPos);
            char cChar = columnName.charAt(cPos);

            // skip all prefix separators. This is a pure "column name to java bean name" match where
            // all prefixes etc. are resolved down to a single bean property name.
            if (pChar == '.') {
                pPos++;
            } else {
                if (Character.toLowerCase(cChar) != Character.toLowerCase(pChar)) {
                    return false;
                }
                pPos++;
                cPos++;
            }
        }
    }
Matches column names with identical java names, ignoring case.
<p>
Example: column names {@code firstname} or {@code FIRSTNAME} would match java name {@code firstName}.
core/src/main/java/org/jdbi/v3/core/mapper/reflect/CaseInsensitiveColumnNameMatcher.java