module type A  = (Foo with type  t =  string)
module type A  = (Foo with type  Bar.t =  string)
module type A  = (Foo with type 'a t =  string)
module type A  = (Foo with type ('a,'b) t =  string)
module type A  = (Foo with type  t =  'st constraint 'st = int)
module type A  =
  (Foo with type  t =  'st constraint 'st = int constraint 'x = int)
module type A  =
  (Foo with type  t =  'st constraint 'st = int constraint 'x = int and type
     t =  'st constraint 'st = int constraint 'x = int and type  t = 
    'st constraint 'st = int constraint 'x = int)
module type A  = (Foo with type  t =  private string)
module type A  = (Foo with type  t :=  string)
module type A  = (Foo with type 'a t :=  string)
module type A  = (Foo with type ('a,'b) t :=  string)
module type A  = (Foo with type ('a,'b) Bar.t :=  string)
module type A  =
  (Foo with type ('a,'b) Bar.t :=  string and type ('a,'b) Bar.t :=  
    string and type ('a,'b) Bar.t :=  string)
module type A  = (Foo with module Bar = Array)
module type A  = (Foo with module Bar = Belt.Array)
module type A  = (Foo with module X.Bar = Belt.Array)
module type A  =
  (Foo with module X.Bar = Belt.Array and module X.Bar = Belt.Array and
    module X.Bar = Belt.Array)
module type A  = (Foo with module Bar := Array)
module type A  = (Foo with module Bar := Belt.Array)
module type A  =
  (Foo with module X.Bar := Belt.Array and module X.Bar := Belt.Array and
    module X.Bar := Belt.Array)
module type Printable  =
  sig type nonrec t val print : Format.formatter -> t -> unit (a:2) end
module type Comparable  =
  sig type nonrec t val compare : t -> t -> int (a:2) end
module type PrintableComparable  =
  sig include Printable include (Comparable with type  t :=  t) end