private void parseLine(final String line, int lineNum, ConfigPayloadBuilder payloadBuilder) {
        String trimmedLine = line.trim();
        if (trimmedLine.startsWith("#")) return;
        Pair<String, String> fieldAndValue = parseFieldAndValue(trimmedLine);
        String field = fieldAndValue.getFirst();
        String value = fieldAndValue.getSecond();
        if (field==null || value==null) {
            log.log(FINE, () -> "Got field without value in line " + lineNum + ": " + line + ", skipping");
            return;
        }
        field = field.trim();
        value = value.trim();
        validateField(field, trimmedLine, lineNum);
        validateValue(value, trimmedLine, lineNum);
        List<String> fields = parseFieldList(field);
        ConfigPayloadBuilder currentBuilder = payloadBuilder;
        for (int fieldNum = 0; fieldNum < fields.size(); fieldNum++) {
            String fieldName = fields.get(fieldNum);
            boolean isLeaf = (fieldNum == fields.size() - 1);
            if (isLeaf) {
                if (isArray(fieldName)) {
                    // array leaf
                    ConfigPayloadBuilder.Array array = currentBuilder.getArray(getArrayName(fieldName));
                    array.set(getArrayIndex(fieldName), removeQuotes(value));
                } else if (isMap(fieldName)) {
                    // map leaf
                    ConfigPayloadBuilder.MapBuilder map = currentBuilder.getMap(getMapName(fieldName));
                    map.put(getMapKey(fieldName), removeQuotes(value));
                } else {
                    // scalar leaf value
                    currentBuilder.setField(fieldName, removeQuotes(value));
                }
            } else {
                if (isArray(fieldName)) {
                    // array of structs
                    ConfigPayloadBuilder.Array array = currentBuilder.getArray(getArrayName(fieldName));
                    currentBuilder = array.get(getArrayIndex(fieldName));
                } else if (isMap(fieldName)) {
                    // map of structs
                    ConfigPayloadBuilder.MapBuilder map = currentBuilder.getMap(getMapName(fieldName));
                    currentBuilder = map.get(getMapKey(fieldName));
                } else {
                    // struct
                    currentBuilder = currentBuilder.getObject(fieldName);
                }
            }
        }
    }
Deserializes a config payload to slime

@param lines a list with config payload strings
@return an instance of the config class
config/src/main/java/com/yahoo/config/subscription/CfgConfigPayloadBuilder.java