module F(A:X)(B:Y) = A
module F(A:X)(B:Y) = A
module F = ((functor (A : X) -> ((functor (B : Y) -> A)[@attr2 ]))[@attr1 ])
include functor (X : Map) -> functor (Y : Set) -> Z
include functor (X : Map) -> functor (Y : Set) -> Z
module F = ((functor (A : X) -> functor (B : Y) -> A)[@functorAttr ])
include ((functor (X : Map) -> functor (Y : Set) -> Z)[@functorAttr ])
include ((functor (X : Map) -> ((functor (Y : Set) ->
  Z)[@attr3 ]))[@functorAttr2 ][@functorAttr ])
module Make(A:X)(B:Y) : Set = struct let a = A.a + B.b end 
module Make = ((functor (A : X) -> functor (B : Y) ->
  (struct let a = A.a + B.b end : Set))[@functorAttr ])
module F() = Map
module F = ((functor () -> Map)[@functorAttr ])
include functor () -> Map
include ((functor () -> Map)[@functorAttr ])
module Make(Cmp:sig type nonrec t val eq : t -> t -> bool (a:2) end) :
  sig
    type nonrec key = Cmp.t
    type nonrec coll
    val empty : coll
    val add : coll -> key -> coll (a:2)
  end =
  struct
    open Cmp
    type nonrec key = t
    type nonrec coll = key list
    let empty = []
    let add [arity:2](y : coll) (e : key) =
      if List.exists (fun [arity:1]x -> eq x e) y then y else e :: y
  end 
module Gen1(P:Primitive)() =
  struct
    type nonrec t = P.t
    type nonrec internal = P.t
    let inject [arity:1]t = t
  end
module DistinctString() : StringBased =
  struct type nonrec t = string
         let inject [arity:1]t = t end 
module DistinctString() : StringBased =
  struct type nonrec t = string
         let inject [arity:1]t = t end 