module Foo (T : sig type +'a t end) =
struct
(* ... *)
end
module Bar (T : sig type -'a t end) =
struct
(* ... *)
end
module Qux =
struct
(* ... *)
end
module FooQux = Foo(Qux)
module BarQux = Bar(Qux)
bW9kdWxlIEZvbyAoVCA6IHNpZyB0eXBlICsnYSB0IGVuZCkgPQogIHN0cnVjdAogICAgKCogLi4uICopCiAgZW5kCgptb2R1bGUgQmFyIChUIDogc2lnIHR5cGUgLSdhIHQgZW5kKSA9CiAgc3RydWN0CiAgICAoKiAuLi4gKikKICBlbmQKCm1vZHVsZSBRdXggPQogIHN0cnVjdAogICAgdHlwZSAnYSB0ID0gaW50CiAgICAoKiAuLi4gKikKICBlbmQKCm1vZHVsZSBGb29RdXggPSBGb28oUXV4KQptb2R1bGUgQmFyUXV4ID0gQmFyKFF1eCk=