Currently, we run water "middle-end" passes (lowering from exported wave dialect to mlir dialects) using a water-opt binary for isolation purposes, at least in tests. Given that bindings seem isolated enough, consider using bindings and pass manager to run passes instead. There is already a functionality for transform dialect-driven pass application.