MatchSwitch currently takes in matchers and functions for the Stmt class.
This patch generalises the match switch utility (renamed to ASTMatchSwitch) to work for different AST node types by introducing a template argument which is the base type for the AST nodes that the match switch will handle.
A CFGMatchSwitch is introduced as a wrapper around multiple ASTMatchSwitchs for different base types. It works by unwrapping CFGElements into their contained AST nodes and passing the nodes to the relevant ASTMatchSwitch. The CFGMatchSwitch currently only handles CFGStmt and CFGInitializer.
Depends On D131614
These seem unnecessary.