sig
  type 'a sequence = ('-> unit) -> unit
  type 'a gen = unit -> 'a option
  type 'a klist = unit -> [ `Cons of 'a * 'CCKTree.klist | `Nil ]
  type 'a printer = Format.formatter -> '-> unit
  type 'a t = unit -> [ `Nil | `Node of 'a * 'CCKTree.t list ]
  val empty : 'CCKTree.t
  val is_empty : 'CCKTree.t -> bool
  val singleton : '-> 'CCKTree.t
  val node : '-> 'CCKTree.t list -> 'CCKTree.t
  val node1 : '-> 'CCKTree.t -> 'CCKTree.t
  val node2 : '-> 'CCKTree.t -> 'CCKTree.t -> 'CCKTree.t
  val fold : ('-> '-> 'a) -> '-> 'CCKTree.t -> 'a
  val iter : ('-> unit) -> 'CCKTree.t -> unit
  val size : 'CCKTree.t -> int
  val height : 'CCKTree.t -> int
  val map : ('-> 'b) -> 'CCKTree.t -> 'CCKTree.t
  val ( >|= ) : 'CCKTree.t -> ('-> 'b) -> 'CCKTree.t
  val cut_depth : int -> 'CCKTree.t -> 'CCKTree.t
  class type ['a] pset =
    object method add : '-> 'CCKTree.pset method mem : '-> bool end
  val set_of_cmp : ?cmp:('-> '-> int) -> unit -> 'CCKTree.pset
  val dfs :
    ?pset:'CCKTree.pset ->
    'CCKTree.t -> [ `Enter of '| `Exit of 'a ] CCKTree.klist
  val bfs : ?pset:'CCKTree.pset -> 'CCKTree.t -> 'CCKTree.klist
  val force : 'CCKTree.t -> ([ `Nil | `Node of 'a * 'b list ] as 'b)
  val find :
    ?pset:'CCKTree.pset -> ('-> 'b option) -> 'CCKTree.t -> 'b option
  val pp : 'CCKTree.printer -> 'CCKTree.t CCKTree.printer
  module Dot :
    sig
      type attribute =
          [ `Color of string
          | `Id of string
          | `Label of string
          | `Other of string * string
          | `Shape of string
          | `Style of string
          | `Weight of int ]
      type graph = string * CCKTree.Dot.attribute list CCKTree.t list
      val mk_id :
        ('a, Buffer.t, unit, CCKTree.Dot.attribute) Pervasives.format4 -> 'a
      val mk_label :
        ('a, Buffer.t, unit, CCKTree.Dot.attribute) Pervasives.format4 -> 'a
      val make :
        name:string ->
        CCKTree.Dot.attribute list CCKTree.t list -> CCKTree.Dot.graph
      val singleton :
        name:string ->
        CCKTree.Dot.attribute list CCKTree.t -> CCKTree.Dot.graph
      val pp_single :
        string -> CCKTree.Dot.attribute list CCKTree.t CCKTree.printer
      val pp : CCKTree.Dot.graph CCKTree.printer
      val print_to_file : string -> CCKTree.Dot.graph -> unit
      val to_file :
        ?name:string ->
        string -> CCKTree.Dot.attribute list CCKTree.t list -> unit
    end
end