Interface with user-defined match monad?
if there's a match in scope, we use this as the match strategy, assuming it conforms to MatchStrategy as defined below:
(matchTreeMaking: StringAdd).self
(matchTreeMaking: StringFormat).self
(matchTreeMaking: ArrowAssoc[MatchTreeMaking]).x
(Since version 2.10.0) Use leftOfArrow instead
(matchTreeMaking: Ensuring[MatchTreeMaking]).x
(Since version 2.10.0) Use resultOfEnsuring instead
Translate our IR (TreeMakers) into actual Scala Trees using the factory methods in MatchCodeGen.
The IR is mostly concerned with sequencing, substitution, and rendering all necessary conditions, mostly agnostic to whether we're in optimized/pure (virtualized) mode.