getFirstMatch :: (ApplyMonad DefaultIO (ApplyState p), RepoPatch p, ApplyState p ~ Tree)
              => Repository p wR wU wT
              -> [MatchFlag]
              -> IO ()
getFirstMatch r fs = withRecordedMatch r (getFirstMatchS fs)
getFirstMatch :: (ApplyMonad DefaultIO (ApplyState p), RepoPatch p, ApplyState p ~ Tree)
              => Repository p wR wU wT
              -> [MatchFlag]
              -> IO ()
getFirstMatch r fs = withRecordedMatch r (getFirstMatchS fs)
getFirstMatch r fs = withRecordedMatch r (getFirstMatchS fs)