let makeSet (type s) [arity:1]cmp =
  ((let module S = (Set.Make)(struct type nonrec t = s
                                     let compare = cmp end) in ((module
      S) : (module Set.S with type elt = s)))
  [@res.braces ])
let three = ((module Three) : (module X_int))
let numbers = [|three;(module Four)|]
let numbers = (three, (module Four))
let numbers = [three; (module Four)]
let numbers = [|three;(module struct let x = 4 end)|]
let numbers = (three, (module struct let x = 4 end))
let numbers = [three; (module struct let x = 4 end)]
let plus [arity:2]m1 m2 = ((((module
  struct let x = (to_int m1) + (to_int m2) end) : (module X_int)))
  [@res.braces ])
let plus [arity:2]m1 m2 = ((module
  struct let x = (to_int m1) + (to_int m2) end) : (module X_int))
let unique_instance = ((module
  struct module Query_handler = Unique
         let this = Unique.create 0 end) : (module Query_handler_instance))
let build_instance (type a)
  [arity:2]((module Q)  : (module Query_handler with type config = a)) config
  = ((module
  struct module Query_handler = Q
         let this = Q.create config end) : (module Query_handler_instance))
let build_instance (type a)
  [arity:2]((module Q)  : (module Query_handler with type config = a)) config
  = ((((module
  struct module Query_handler = Q
         let this = Q.create config end) : (module Query_handler_instance)))
  [@res.braces ])
let unique_instance = build_instance (module Unique) 0
let build_dispatch_table [arity:1]handlers =
  ((let table = Hashtbl.create (module String) in
    List.iter handlers
      ~f:(fun
            [arity:1](((module I)  : (module Query_handler_instance)) as
                        instance)
            -> Hashtbl.set table ~key:I.Query_handler.name ~data:instance)
      table)
  [@res.braces ])
;;(module Three)
;;((module Three) : (module X_int))
;;(module Teenager).(0)
;;((module Teenager) -> age) -> Js.log
;;((module Teenager).(0)) -> Js.log
;;((if ((module Teenager) -> age) -> isAdult
    then Js.log {js|has responsibilities|js}
    else Js.log {js|can play in the playground|js})[@res.ternary ])
;;((if ((module Streets).(0)) -> isExpensive
    then Js.log {js|big money|js}
    else Js.log {js|affordable|js})[@res.ternary ])
let () = ((((module Teenager) -> age) -> Js.log)[@res.braces ])
let () = (((module Teenager).(0))[@res.braces ])
let () =
  ((if ((module Teenager) -> age) -> isAdult
    then Js.log {js|has responsibilities|js}
    else Js.log {js|can play in the playground|js})
  [@res.braces ][@res.ternary ])
let () =
  ((if ((module Streets).(0)) -> isExpensive
    then Js.log {js|big money|js}
    else Js.log {js|affordable|js})
  [@res.braces ][@res.ternary ])
let () =
  ((let a = 1 in
    let b = 2 in (module Teenager).(0); ((module Teenager) -> age) -> Js.log)
  [@res.braces ])
let () =
  ((let a = 1 in
    let b = 2 in
    ((module Teenager) -> age) -> Js.log;
    ((if (((module Teenager).(0)) -> age) -> isAdult
      then Js.log {js|has responsibilities|js}
      else Js.log {js|can play in the playground|js})
    [@res.ternary ]))
  [@res.braces ])