private static boolean compareEvents(ValidationEvent expected, ValidationEvent actual) {
        String normalizedActualMessage = normalizeMessage(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 list of model diff events.

<p>The diff events encountered 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 actualEvents List of actual diff events.
@return Returns the created test case result.
smithy-diff/src/main/java/software/amazon/smithy/diff/testrunner/SmithyDiffTestCase.java