protected static String[] splitKeyValue(String keyValueLine) {
            String line = StringUtils.clean(keyValueLine);
            if (line == null) {
                return null;
            }
            StringBuilder keyBuffer = new StringBuilder();
            StringBuilder valueBuffer = new StringBuilder();

            //we'll build the value next:
            boolean buildingKey = true;

            for (int i = 0; i < line.length(); i++) {
                char c = line.charAt(i);

                if (buildingKey) {
                    if (isKeyValueSeparatorChar(c) && !isCharEscaped(line, i) && !isCharEscaped(line, i - 1)) {
                        //now start building the value
                        buildingKey = false;
                    } else if (!isCharEscaped(line, i)) {
                        keyBuffer.append(c);
                    }
                } else {
                    if (valueBuffer.length() != 0 || !isKeyValueSeparatorChar(c) || isCharEscaped(line, i)) {
                        valueBuffer.append(c);
                    }
                }
            }

            String key = StringUtils.clean(keyBuffer.toString());
            String value = StringUtils.clean(valueBuffer.toString());

            if (key == null || value == null) {
                String msg = "Line argument must contain a key and a value.  Only one string token was found.";
                throw new IllegalArgumentException(msg);
            }

            LOGGER.trace("Discovered key/value pair: {} = {}", key, value);

            return new String[] {key, value};
        }
An {@code Ini.Section} is String-key-to-String-value Map, identifiable by a
{@link #getName() name} unique within an {@link Ini} instance.
config/core/src/main/java/org/apache/shiro/config/Ini.java