private static Class<?> getGenericsParam(final Type typeWithGenerics, final int index) {
        List<Type> genericsParamTypes = PropertyUtil.getGenericTypes(typeWithGenerics);
        if (genericsParamTypes.isEmpty()) {
            throw new RuntimeException(LogUtil.message(
                    "Unable to get generics parameter {} for type {} as it has no parameterised types",
                    index, typeWithGenerics));
        }
        if (index >= genericsParamTypes.size()) {
            throw new IllegalArgumentException(LogUtil.message("Index {} is out of bounds for types {}",
                    index, genericsParamTypes));
        }

        return PropertyUtil.getDataType(genericsParamTypes.get(index));
    }
@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