When extending the type of another module why not using a simpler way of referencing it:
```ocaml
type M.foo += A2
```
Great that you wrote a comprehensive testsuite!