sig
  type ('a, 'b, 'c, 'd) t = private
      Id : ('a, 'a, 'c, 'c) Transform.Pipe.t
    | Fail : ('a, 'b, 'c, 'd) Transform.Pipe.t
    | Flatten :
        ('a, 'b list, 'c, 'd) Transform.Pipe.t -> ('a, 'b, 'c, 'd)
                                                  Transform.Pipe.t
    | Close : ('b1 -> ('c1 -> 'd) -> 'b2 * ('c2 -> 'd)) *
        ('a, 'b1, 'c1, 'd) Transform.Pipe.t -> ('a, 'b2, 'c2, 'd)
                                               Transform.Pipe.t
    | Comp : ('a, 'b, 'e, 'f) Transform.transformation *
        ('b, 'c, 'd, 'e) Transform.Pipe.t -> ('a, 'c, 'd, 'f)
                                             Transform.Pipe.t
    | Fork : ('a, 'b, 'c, 'd) Transform.Pipe.t *
        ('a, 'b, 'c, 'd) Transform.Pipe.t -> ('a, 'b, 'c, 'd)
                                             Transform.Pipe.t
  val id : ('a, 'a, 'c, 'c) Transform.Pipe.t
  val fail : ('a, 'b, 'c, 'd) Transform.Pipe.t
  val flatten :
    ('a, 'b list, 'c, 'd) Transform.Pipe.t ->
    ('a, 'b, 'c, 'd) Transform.Pipe.t
  val close :
    f:('b1 -> ('c1 -> 'd) -> 'b2 * ('c2 -> 'd)) ->
    ('a, 'b1, 'c1, 'd) Transform.Pipe.t ->
    ('a, 'b2, 'c2, 'd) Transform.Pipe.t
  val compose :
    ('a, 'b, 'd1, 'e) Transform.transformation ->
    ('b, 'b2, 'c, 'd1) Transform.Pipe.t -> ('a, 'b2, 'c, 'e) Transform.Pipe.t
  val ( @@@ ) :
    ('a, 'b, 'd1, 'e) Transform.transformation ->
    ('b, 'b2, 'c, 'd1) Transform.Pipe.t -> ('a, 'b2, 'c, 'e) Transform.Pipe.t
  val fork :
    ('a, 'b, 'c, 'd) Transform.Pipe.t ->
    ('a, 'b, 'c, 'd) Transform.Pipe.t -> ('a, 'b, 'c, 'd) Transform.Pipe.t
  val fork_l :
    ('a, 'b, 'c, 'd) Transform.Pipe.t list ->
    ('a, 'b, 'c, 'd) Transform.Pipe.t
  val fork_comp :
    ('a, 'b, 'd1, 'e) Transform.transformation list ->
    ('b, 'b2, 'c, 'd1) Transform.Pipe.t -> ('a, 'b2, 'c, 'e) Transform.Pipe.t
  val check : ('a, 'b, 'c, 'd) Transform.Pipe.t -> unit
  val print : ('a, 'b, 'c, 'd) Transform.Pipe.t Transform.printer
end