sig
  type ('a, 'b) t =
      Leaf of 'a * 'b
    | Node of 'a * ('a, 'b) GapiCore.AnnotatedTree.t list
  val map : ('-> 'b) -> 'a list -> 'b list
  val kfold :
    ('->
     (('-> 'b) -> 'c) list ->
     ('a, 'd) GapiCore.AnnotatedTree.t -> ('-> 'b) -> 'c) ->
    ('-> '-> ('a, 'd) GapiCore.AnnotatedTree.t -> ('-> 'b) -> 'c) ->
    ('a, 'd) GapiCore.AnnotatedTree.t -> 'c
  val xfold :
    ('-> 'b list -> ('a, 'c) GapiCore.AnnotatedTree.t -> 'b) ->
    ('-> '-> ('a, 'c) GapiCore.AnnotatedTree.t -> 'b) ->
    ('a, 'c) GapiCore.AnnotatedTree.t -> 'b
  val fold :
    ('-> 'b list -> 'b) ->
    ('-> '-> 'b) -> ('a, 'c) GapiCore.AnnotatedTree.t -> 'b
end