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:
(matchCodeGen: StringAdd).self
(matchCodeGen: StringFormat).self
(matchCodeGen: ArrowAssoc[MatchCodeGen]).x
(Since version 2.10.0) Use leftOfArrow
instead
(matchCodeGen: Ensuring[MatchCodeGen]).x
(Since version 2.10.0) Use resultOfEnsuring
instead
Factory methods used by TreeMakers to make the actual trees.
We have two modes in which to emit trees: optimized (the default) and pure (aka "virtualized": match is parametric in its monad).