module type S : sig ... end
(conv) (conv) caller callee | | | | M.caller ---->-- M1 -->-. (impl) \ \ callee \--->-- M2 -->---\ | \ \ | `->-- M3 -->---- M.callee --> unit
module Make : functor (Model : sig ... end) -> sig ... end