Reading the documentation for clang::ast_matchers::MatchFinder, it says: " The order of matches is guaranteed to be equivalent to doing a pre-order traversal on the AST, and applying the matchers in the order in which they were added to the [MatchFinder](https://clang.llvm.org/doxygen/classclang_1_1ast__matchers_1_1MatchFinder.
Could anyone clarify what this means precisely? As in, does it apply matchers in the order in which they were added via addMatcher(), and then matches in the code are ordered according to a pre-order traversal of the AST, or does it do a pre-order traversal of the AST, applying all matchers in a single run?
Having done some testing, it seems like the matchers are not executed over the AST in the order they were added. Is there a way to achieve this? I.e. to ensure that if matcher A is added before matcher B via addMatcher(), then all occurrences of code matched by matcher A are found before matcher B is applied?
Also, is there a way to ensure that matches are made in the order they appear in the code (or is this guaranteed by pre-order traversal?).