sig
  type 'a t = Node of 'a * 'Mlpost.Tree_adv.t list
  module Place :
    functor (X : Signature.Boxlike->
      sig
        val gen_place :
          place:(Mlpost.Box.t Mlpost.Tree_adv.t -> Mlpost.Box.t) ->
          X.t Mlpost.Tree_adv.t -> X.t Mlpost.Tree_adv.t
        val place :
          ?ls:Mlpost.Num.t ->
          ?cs:Mlpost.Num.t ->
          ?valign:Mlpost.Box.position ->
          ?halign:Mlpost.Box.position ->
          X.t Mlpost.Tree_adv.t -> X.t Mlpost.Tree_adv.t
      end
  val gen_draw_arrows :
    '->
    style:(Mlpost.Point.t -> Mlpost.Point.t -> 'c) ->
    corner:(Mlpost.Box.position -> '-> Mlpost.Point.t) ->
    'Mlpost.Tree_adv.t -> 'Mlpost.Tree_adv.t
  val draw : ('-> Mlpost.Box.t) -> 'Mlpost.Tree_adv.t -> Mlpost.Command.t
  val map : ('-> 'b) -> 'Mlpost.Tree_adv.t -> 'Mlpost.Tree_adv.t
  val map2 :
    ('-> '-> 'c) ->
    'Mlpost.Tree_adv.t -> 'Mlpost.Tree_adv.t -> 'Mlpost.Tree_adv.t
  val combine :
    'Mlpost.Tree_adv.t ->
    'Mlpost.Tree_adv.t -> ('a * 'b) Mlpost.Tree_adv.t
  val split :
    ('a * 'b) Mlpost.Tree_adv.t ->
    'Mlpost.Tree_adv.t * 'Mlpost.Tree_adv.t
  val root_map :
    ('a option -> '-> 'b) -> 'Mlpost.Tree_adv.t -> 'Mlpost.Tree_adv.t
  val map_children :
    ('-> 'a list -> 'b) -> 'Mlpost.Tree_adv.t -> 'Mlpost.Tree_adv.t
  val fold : ('-> '-> 'a) -> '-> 'Mlpost.Tree_adv.t -> 'a
  val fold_child : ('-> '-> '-> 'a) -> '-> 'Mlpost.Tree_adv.t -> 'a
  val filter : ('-> bool) -> 'Mlpost.Tree_adv.t -> 'Mlpost.Tree_adv.t
  val filter_option :
    ('-> 'b option) -> 'Mlpost.Tree_adv.t -> 'Mlpost.Tree_adv.t
  val wrap_corner_box :
    ('-> Mlpost.Box.t) ->
    (corner:(Mlpost.Box.position -> '-> Mlpost.Point.t) -> 'c) -> 'c
  module Overlays :
    sig
      type interval = Bet of int * int | Bef of int | Aft of int | Nev | Alw
      val in_interval : int -> Mlpost.Tree_adv.Overlays.interval -> bool
      val min_interval : int -> Mlpost.Tree_adv.Overlays.interval -> int
      val max_interval : int -> Mlpost.Tree_adv.Overlays.interval -> int
      val min_tree :
        ('-> Mlpost.Tree_adv.Overlays.interval) ->
        'Mlpost.Tree_adv.t -> int
      val max_tree :
        ('-> Mlpost.Tree_adv.Overlays.interval) ->
        'Mlpost.Tree_adv.t -> int
      type 'a spec = (Mlpost.Tree_adv.Overlays.interval * 'a) list
      val assoq : int -> 'Mlpost.Tree_adv.Overlays.spec -> 'a
      val max : ('-> Mlpost.Num.t) -> ('b * 'a) list -> Mlpost.Num.t
      val set_pos :
        (Mlpost.Point.t -> '-> 'b) ->
        Mlpost.Point.t ->
        'Mlpost.Tree_adv.Overlays.spec -> 'Mlpost.Tree_adv.Overlays.spec
    end
  module Overlays_Boxlike :
    functor (X : Signature.Boxlike->
      sig
        type t = X.t Overlays.spec
        val width : t -> float
        val height : t -> float
        val set_pos : Signature.point -> t -> t
      end
end