private static <T> List<String> getConstructorArgNames(final Constructor<T> constructor) {
        return Arrays.stream(constructor.getParameters())
                .map(parameter -> {
                    if (parameter.isAnnotationPresent(JsonProperty.class)) {
                        return parameter.getAnnotation(JsonProperty.class).value();
                    } else {
                        LOGGER.warn("No @JsonProperty annotation on {} {}", constructor, parameter.getName());
                        return parameter.getName();
                    }
                })
                .collect(Collectors.toList());
    }
@return otherValue if it is non-null or copyNulls is true, else thisValue
stroom-util/src/main/java/stroom/util/config/PropertyUtil.java