public static <T> Result<T> of(
                final Collection<Result<T>> results,
                final Class<T> configSuperType) {
            final Set<ConstraintViolation<? extends T>> constraintViolations = new HashSet<>();

            results.forEach(result -> {
                if (result.hasErrorsOrWarnings()) {
                    constraintViolations.addAll(result.constraintViolations);
                }
            });

            return Result.of(constraintViolations, configSuperType);
        }
Walks the config object tree validating each branch regardless of whether they have @Valid
annotations.
stroom-util/src/main/java/stroom/util/config/ConfigValidator.java