@Override
    public List<ValidationEvent> validate(Model model) {
        // Skip the expensive checks if the httpPayload trait isn't event used.
        if (!model.isTraitApplied(HttpPayloadTrait.class)) {
            return Collections.emptyList();
        }

        OperationIndex opIndex = OperationIndex.of(model);
        HttpBindingIndex bindings = HttpBindingIndex.of(model);
        List<ValidationEvent> events = new ArrayList<>();

        for (OperationShape operation : model.getOperationShapesWithTrait(HttpTrait.class)) {
            events.addAll(validateOperation(bindings, opIndex, operation));
        }

        for (StructureShape structure : model.getStructureShapesWithTrait(ErrorTrait.class)) {
            events.addAll(validateError(structure, bindings));
        }

        return events;
    }
Validates that if a payload trait is present then all members of the
input of an operation are bound to part of the message.
smithy-model/src/main/java/software/amazon/smithy/model/validation/validators/HttpPayloadValidator.java