avoid `&dyn Fn` in lowerer