private static <T> List<T> stringToList(
            final Prop prop,
            final String serialisedForm,
            final Class<T> type) {
        if (serialisedForm == null || serialisedForm.isEmpty()) {
            return Collections.emptyList();
        } else {
            final String delimiter = String.valueOf(serialisedForm.charAt(0));
            validateDelimiter(
                    serialisedForm,
                    0,
                    "first",
                    LIST_EXAMPLE);

            try {

                String delimitedValue = serialisedForm.substring(1);

                return StreamSupport.stream(
                                Splitter
                                        .on(delimiter)
                                        .split(delimitedValue)
                                        .spliterator(), false)
                        .map(str -> convertToObject(prop, str, type))
                        .map(type::cast)
                        .collect(Collectors.toList());
            } catch (Exception e) {
                throw new RuntimeException(LogUtil.message(
                        "Error de-serialising a List<?> from [{}]", serialisedForm), e);
            }
        }
    }
@param dbConfigProperty The config property object obtained from the database
@return The updated typed value from the object model
stroom-config/stroom-config-global-impl/src/main/java/stroom/config/global/impl/ConfigMapper.java