private static boolean compareEvents(ValidationEvent expected, ValidationEvent actual) {
        String normalizedActualMessage = actual.getMessage();
        if (actual.getSuppressionReason().isPresent()) {
            normalizedActualMessage += " (" + actual.getSuppressionReason().get() + ")";
        }
        normalizedActualMessage = normalizeMessage(normalizedActualMessage);

        String comparedMessage = normalizeMessage(expected.getMessage());
        return expected.getSeverity() == actual.getSeverity()
                && actual.containsId(expected.getId())
                && expected.getShapeId().equals(actual.getShapeId())
                // Normalize new lines.
                && normalizedActualMessage.startsWith(comparedMessage);
    }
Creates a test case result from a test case and validated model.

<p>The validation events encountered while validating a model are
compared against the expected validation events. An actual event (A) is
considered a match with an expected event (E) if A and E target the
same shape, have the same severity, the eventId of A contains the eventId
of E, and the message of E starts with the suppression reason or message
of A.

@param validatedResult Result of creating and validating the model.
@return Returns the created test case result.
smithy-model/src/main/java/software/amazon/smithy/model/validation/testrunner/SmithyTestCase.java