private static Map<ShapeId, List<DiffStrategy>> computeDiffStrategies(Model model) {
        Map<ShapeId, List<DiffStrategy>> result = new HashMap<>();

        // Find all trait definition shapes.
        for (Shape shape : model.getShapesWithTrait(TraitDefinition.class)) {
            TraitDefinition definition = shape.expectTrait(TraitDefinition.class);
            List<DiffStrategy> strategies = createStrategiesForShape(shape, true);
            if (!strategies.isEmpty()) {
                result.put(shape.getId(), strategies);
            } else if (!definition.getBreakingChanges().isEmpty()) {
                // Avoid duplicate validation events; delegate emitting events to TraitBreakingChange.
                result.put(shape.getId(), Collections.emptyList());
            } else {
                result.put(shape.getId(), DEFAULT_STRATEGIES);
            }
        }

        return result;
    }
Traits in this list have special backward compatibility rules and can't be validated here.
smithy-diff/src/main/java/software/amazon/smithy/diff/evaluators/ModifiedTrait.java