class CompositeCompatibilityVerifier {

    private final List<CompatibilityVerifier> verifiers;

    public CompositeCompatibilityVerifier(List<CompatibilityVerifier> verifiers) {
        this.verifiers = verifiers;
    }

    public void verifyCompatibilities() {
        List<VerificationResult> errors = verifierErrors();
        if (errors.isEmpty()) {
            return;
        }
        String errorMessage = errors.stream().map(VerificationResult::toErrorMessage).toList().toString();
        throw new CompatibilityNotMetException(errors, errorMessage);
    }

    private List<VerificationResult> verifierErrors() {<FILL_FUNCTION_BODY>}
}

        List<VerificationResult> errors = new ArrayList<>();
        for (CompatibilityVerifier verifier : this.verifiers) {
            VerificationResult result = verifier.verify();
            if (result.isNotCompatible()) {
                errors.add(result);
            }
        }
        return errors;
    
<no_super_class>