private void validateEncodings(Model model, OperationShape operationShape, List<ValidationEvent> events) {
        // Validate encodings have at least one compression algorithm
        RequestCompressionTrait trait = operationShape.expectTrait(RequestCompressionTrait.class);
        if (trait.getEncodings().isEmpty()) {
            events.add(error(operationShape,
                    trait,
                    String.format(
                            "There must be at least one compression algorithm in `encodings` for the "
                                    + "`requestCompression` trait applied to `%s`",
                            operationShape.getId())));
            return;
        }
        // Validate encodings are all supported compression algorithms
        List<String> invalidEncodings = new ArrayList<>();
        for (String encoding : trait.getEncodings()) {
            if (!isValidEncoding(encoding)) {
                invalidEncodings.add(encoding);
            }
        }
        if (!invalidEncodings.isEmpty()) {
            events.add(error(operationShape,
                    trait,
                    String.format(
                            "Invalid compression algorithm%s found in `requestCompression` trait applied to `%s`: %s",
                            invalidEncodings.size() == 1 ? "" : "s",
                            operationShape.getId(),
                            ValidationUtils.tickedList(invalidEncodings))));
        }
    }
Validates the requestCompression trait.

- Validates that the operation input has no member with both streaming and
  requiresLength traits applied
- Validate encodings has at least one compression algorithm
- Validate encodings are all supported compression algorithms
smithy-model/src/main/java/software/amazon/smithy/model/validation/validators/RequestCompressionTraitValidator.java