PR #16817 added the ApiCompatibility object model and currently the way the rules are executed is for every ElementMapper visited in the DifferenceVisitor we iterate every rule that we resolved via reflection and invoke Rule.Run(ElementMapper).
This is the "hot" path of the object model and we should run numbers and see if there is a better way to do this, there might be other ways like events/hooks that might serve better.
#16817 (comment) for more context.
cc: @ericstj @Anipik