module Both_convert: sig .. end
Both_convert rpcs combine features of both caller-converts and callee-converts
      versioning schemes in such a way that one can smoothly add a new version of the rpc
      to a shared library, and it doesn't matter whether the callee or caller upgrades to
      the latest version of the shared library first, the new version will not be
      exercised until both sides support it.
      
                      (conv)   (conv)                          (conv)   (conv)
                      caller   callee                          callee   caller
                      |        |                               |        |
                      |        |                               |        |
         Q.caller ---->-- Q1 -->-.             (impl)        .->-- R1 -->---- R.caller
                 \                \            callee       /                /
                  \--->-- Q2 -->---\           |           /--->-- R2 -->---/
                   \                \          |          /                /
                    `->-- Q3 -->---- Q.callee --> R.callee ---->-- R3 -->-'
      
module Connection_with_menu: sig .. end
module Plain: functor (Model : sigend) -> sig .. end