sig
  type ('p, 'q, 'a) t
  val align_with :
    (('a, 'b) These.t -> 'c) ->
    ('p, 'q, 'a) t -> ('p, 'q, 'b) t -> ('p, 'q, 'c) t
  val align :
    ('p, 'q, 'a) t -> ('p, 'q, 'b) t -> ('p, 'q, ('a, 'b) These.t) t
  val falign :
    ('-> '-> 'a) -> ('p, 'q, 'a) t -> ('p, 'q, 'a) t -> ('p, 'q, 'a) t
  val pad_zip_with :
    ('a option -> 'b option -> 'c) ->
    ('p, 'q, 'a) t -> ('p, 'q, 'b) t -> ('p, 'q, 'c) t
  val pad_zip :
    ('p, 'q, 'a) t -> ('p, 'q, 'b) t -> ('p, 'q, 'a option * 'b option) t
end