public static int parseConfiguration(final String text, final int startIdx, @NonNull final Map<String, List<String>> result) {
        if (text == null) {
            return 0;
        }
        if (startIdx >= text.length()) {
            return text.length();
        }
        int idx = startIdx;
        String currKey = null;
        while (true) {
            final StringBuilder nextToken = new StringBuilder();
            idx = parseToNextDelim(text, idx, ESCAPE_CHARS, nextToken);
            if (idx < text.length() && text.charAt(idx) == KEYVALUE_SEPARATOR) {
                currKey = nextToken.toString();
                //special case: if = is right at the start, then this is the default list
                if (currKey.isEmpty() && idx == startIdx) {
                    currKey = null;
                }
            } else {
                List<String> values = result.get(currKey);
                if (values == null) {
                    values = new ArrayList<>();
                    result.put(currKey, values);
                }
                values.add(nextToken.toString());
                currKey = null;
                if (idx >= text.length() || text.charAt(idx) != CONFIG_SEPARATOR) {
                    break;
                }
            }
            idx++;
        }
        return idx;
    }
parses a configuration from string 'text', starting at position 'idx'. Config read is filled into 'result'.
main/src/main/java/cgeo/geocaching/utils/config/LegacyFilterConfigParser.java