sig
  type ('a, 'm) fg
  type ('wrapped_type, 'a, 'm) wrap
  val empty : ('a, 'm) BatFingerTree.S.fg
  val singleton : '-> ('a, 'm) BatFingerTree.S.fg
  val cons :
    (('a, 'm) BatFingerTree.S.fg -> '-> ('a, 'm) BatFingerTree.S.fg, 'a,
     'm)
    BatFingerTree.S.wrap
  val snoc :
    (('a, 'm) BatFingerTree.S.fg -> '-> ('a, 'm) BatFingerTree.S.fg, 'a,
     'm)
    BatFingerTree.S.wrap
  val front :
    (('a, 'm) BatFingerTree.S.fg -> (('a, 'm) BatFingerTree.S.fg * 'a) option,
     'a, 'm)
    BatFingerTree.S.wrap
  val front_exn :
    (('a, 'm) BatFingerTree.S.fg -> ('a, 'm) BatFingerTree.S.fg * 'a, 'a, 'm)
    BatFingerTree.S.wrap
  val head : ('a, 'm) BatFingerTree.S.fg -> 'a option
  val head_exn : ('a, 'm) BatFingerTree.S.fg -> 'a
  val last : ('a, 'm) BatFingerTree.S.fg -> 'a option
  val last_exn : ('a, 'm) BatFingerTree.S.fg -> 'a
  val tail :
    (('a, 'm) BatFingerTree.S.fg -> ('a, 'm) BatFingerTree.S.fg option, 'a,
     'm)
    BatFingerTree.S.wrap
  val tail_exn :
    (('a, 'm) BatFingerTree.S.fg -> ('a, 'm) BatFingerTree.S.fg, 'a, 'm)
    BatFingerTree.S.wrap
  val init :
    (('a, 'm) BatFingerTree.S.fg -> ('a, 'm) BatFingerTree.S.fg option, 'a,
     'm)
    BatFingerTree.S.wrap
  val init_exn :
    (('a, 'm) BatFingerTree.S.fg -> ('a, 'm) BatFingerTree.S.fg, 'a, 'm)
    BatFingerTree.S.wrap
  val rear :
    (('a, 'm) BatFingerTree.S.fg -> (('a, 'm) BatFingerTree.S.fg * 'a) option,
     'a, 'm)
    BatFingerTree.S.wrap
  val rear_exn :
    (('a, 'm) BatFingerTree.S.fg -> ('a, 'm) BatFingerTree.S.fg * 'a, 'a, 'm)
    BatFingerTree.S.wrap
  val size : ('a, 'm) BatFingerTree.S.fg -> int
  val is_empty : ('a, 'm) BatFingerTree.S.fg -> bool
  val fold_left :
    ('acc -> '-> 'acc) -> 'acc -> ('a, 'm) BatFingerTree.S.fg -> 'acc
  val fold_right :
    ('acc -> '-> 'acc) -> 'acc -> ('a, 'm) BatFingerTree.S.fg -> 'acc
  val iter : ('-> unit) -> ('a, 'm) BatFingerTree.S.fg -> unit
  val iter_right : ('-> unit) -> ('a, 'm) BatFingerTree.S.fg -> unit
  val compare :
    ('-> '-> int) ->
    ('a, 'm) BatFingerTree.S.fg -> ('a, 'm) BatFingerTree.S.fg -> int
  val equal :
    ('-> '-> bool) ->
    ('a, 'm) BatFingerTree.S.fg -> ('a, 'm) BatFingerTree.S.fg -> bool
  val enum : ('a, 'm) BatFingerTree.S.fg -> 'BatEnum.t
  val backwards : ('a, 'm) BatFingerTree.S.fg -> 'BatEnum.t
  val to_list : ('a, 'm) BatFingerTree.S.fg -> 'a list
  val to_list_backwards : ('a, 'm) BatFingerTree.S.fg -> 'a list
  val of_enum :
    ('BatEnum.t -> ('a, 'm) BatFingerTree.S.fg, 'a, 'm)
    BatFingerTree.S.wrap
  val of_backwards :
    ('BatEnum.t -> ('a, 'm) BatFingerTree.S.fg, 'a, 'm)
    BatFingerTree.S.wrap
  val of_list :
    ('a list -> ('a, 'm) BatFingerTree.S.fg, 'a, 'm) BatFingerTree.S.wrap
  val of_list_backwards :
    ('a list -> ('a, 'm) BatFingerTree.S.fg, 'a, 'm) BatFingerTree.S.wrap
  val map :
    (('-> 'b) -> ('a, 'm) BatFingerTree.S.fg -> ('b, 'm) BatFingerTree.S.fg,
     'b, 'm)
    BatFingerTree.S.wrap
  val map_right :
    (('-> 'b) -> ('a, 'm) BatFingerTree.S.fg -> ('b, 'm) BatFingerTree.S.fg,
     'b, 'm)
    BatFingerTree.S.wrap
  val append :
    (('a, 'm) BatFingerTree.S.fg ->
     ('a, 'm) BatFingerTree.S.fg -> ('a, 'm) BatFingerTree.S.fg, 'a, 'm)
    BatFingerTree.S.wrap
  val reverse :
    (('a, 'm) BatFingerTree.S.fg -> ('a, 'm) BatFingerTree.S.fg, 'a, 'm)
    BatFingerTree.S.wrap
  val print :
    ?first:string ->
    ?last:string ->
    ?sep:string ->
    ('a, 'b) BatIO.printer -> (('a, 'c) BatFingerTree.S.fg, 'b) BatIO.printer
end