sig
  val flprint : string -> unit
  val fleprint : string -> unit
  val print_floats : float list -> unit
  val print_ints : int list -> unit
  val print_int32s : int32 list -> unit
  val firstchar : string -> char option
  val lastchar : string -> char option
  val explode : string -> char list
  val implode : char list -> string
  val string_of_char : char -> string
  val string_replace_all : string -> string -> string -> string
  val string_replace_all_lazy :
    string -> (unit -> string) -> string -> string
  val starts_with : string -> string -> bool
  val hd : 'a list -> 'a
  val tl : 'a list -> 'a list
  val rev : 'a list -> 'a list
  val iter : ('-> unit) -> 'a list -> unit
  val iter2 : ('-> '-> unit) -> 'a list -> 'b list -> unit
  val iter3 :
    ('-> '-> '-> unit) -> 'a list -> 'b list -> 'c list -> unit
  val append : 'a list -> 'a list -> 'a list
  val ( @ ) : 'a list -> 'a list -> 'a list
  val flatten : 'a list list -> 'a list
  val rev_map : ('-> 'b) -> 'a list -> 'b list
  val map : ('-> 'b) -> 'a list -> 'b list
  val map2 : ('-> '-> 'c) -> 'a list -> 'b list -> 'c list
  val split : ('a * 'b) list -> 'a list * 'b list
  val split3 : ('a * 'b * 'c) list -> 'a list * 'b list * 'c list
  val split5 :
    ('a * 'b * 'c * 'd * 'e) list ->
    'a list * 'b list * 'c list * 'd list * 'e list
  val split6 :
    ('a * 'b * 'c * 'd * 'e * 'f) list ->
    'a list * 'b list * 'c list * 'd list * 'e list * 'f list
  val split8 :
    ('a * 'b * 'c * 'd * 'e * 'f * 'g * 'h) list ->
    'a list * 'b list * 'c list * 'd list * 'e list * 'f list * 'g list *
    'h list
  val combine : 'a list -> 'b list -> ('a * 'b) list
  val combine3 : 'a list -> 'b list -> 'c list -> ('a * 'b * 'c) list
  val fold_left : ('-> '-> 'a) -> '-> 'b list -> 'a
  val fold_right : ('-> '-> 'b) -> 'a list -> '-> 'b
  val length : 'a list -> int
  val sort : ('-> '-> int) -> 'a list -> 'a list
  val sum : int list -> int
  val fsum : float list -> float
  val cumulative_sum : int -> int list -> int list
  val lcount : ('-> bool) -> 'a list -> int
  val losenones : 'a option list -> 'a list
  val option_map : ('-> 'b option) -> 'a list -> 'b list
  val option_map2 : ('-> '-> 'c option) -> 'a list -> 'b list -> 'c list
  val mem : '-> 'a list -> bool
  val position : '-> 'a list -> int option
  val position_1 : '-> 'a list -> int option
  val rev_map3 :
    ('-> '-> '-> 'd) -> 'a list -> 'b list -> 'c list -> 'd list
  val map3 :
    ('-> '-> '-> 'd) -> 'a list -> 'b list -> 'c list -> 'd list
  val rev_map4 :
    ('-> '-> '-> '-> 'e) ->
    'a list -> 'b list -> 'c list -> 'd list -> 'e list
  val map4 :
    ('-> '-> '-> '-> 'e) ->
    'a list -> 'b list -> 'c list -> 'd list -> 'e list
  val rev_map5 :
    ('-> '-> '-> '-> '-> 'f) ->
    'a list -> 'b list -> 'c list -> 'd list -> 'e list -> 'f list
  val map5 :
    ('-> '-> '-> '-> '-> 'f) ->
    'a list -> 'b list -> 'c list -> 'd list -> 'e list -> 'f list
  val rev_map6 :
    ('-> '-> '-> '-> '-> '-> 'g) ->
    'a list -> 'b list -> 'c list -> 'd list -> 'e list -> 'f list -> 'g list
  val map6 :
    ('-> '-> '-> '-> '-> '-> 'g) ->
    'a list -> 'b list -> 'c list -> 'd list -> 'e list -> 'f list -> 'g list
  val take : 'a list -> int -> 'a list
  val take' : int -> 'a list -> 'a list
  val drop : 'a list -> int -> 'a list
  val drop' : int -> 'a list -> 'a list
  val takewhile : ('-> bool) -> 'a list -> 'a list
  val takewhile_reverse : ('-> bool) -> 'a list -> 'a list
  val dropwhile : ('-> bool) -> 'a list -> 'a list
  val cleave : 'a list -> int -> 'a list * 'a list
  val cleavewhile : ('-> bool) -> 'a list -> 'a list * 'a list
  val cleavewhile_unordered : ('-> bool) -> 'a list -> 'a list * 'a list
  val isolate : ('-> bool) -> ('-> bool) -> 'a list -> 'a list
  val interleave : '-> 'a list -> 'a list
  val interleave_lists : 'a list -> 'a list -> 'a list
  val collate : ('-> '-> int) -> 'a list -> 'a list list
  val map_lol : ('-> 'b) -> 'a list list -> 'b list list
  val pairs : 'a list -> ('a * 'a) list
  val mem' : 'a list -> '-> bool
  val setify : 'a list -> 'a list
  val setify_preserving_order : 'a list -> 'a list
  val setminus : 'a list -> 'a list -> 'a list
  val setminus_preserving_order : 'a list -> 'a list -> 'a list
  val heads : 'a list list -> 'a list
  val tails : 'a list list -> 'a list list
  val zipn : 'a list list -> 'a list list
  val couple : ('-> '-> 'b) -> 'a list -> 'b list
  val couple_ext : ('-> '-> 'b) -> ('-> 'b) -> 'a list -> 'b list
  val couple_reduce : ('-> '-> 'a) -> 'a list -> 'a
  val pair : ('-> '-> 'a) -> 'a list -> 'a list
  val pair_ext : ('-> '-> 'b) -> ('-> 'b) -> 'a list -> 'b list
  val pair_reduce : ('-> '-> 'a) -> 'a list -> 'a
  val keep : ('-> bool) -> 'a list -> 'a list
  val lose : ('-> bool) -> 'a list -> 'a list
  val many : '-> int -> 'a list
  val manyunique : (unit -> 'a) -> int -> 'a list
  val splitinto : int -> 'a list -> 'a list list
  val splitinto_small : int -> 'a list -> 'a list list
  val splitat : int list -> 'a list -> 'a list list
  val select : int -> 'a list -> 'a
  val replace_number : int -> '-> 'a list -> 'a list
  val isnull : 'a list -> bool
  val notnull : 'a list -> bool
  val last : 'a list -> 'a
  val all_but_last : 'a list -> 'a list
  val extremes : 'a list -> 'a * 'a
  val extremes_and_middle : 'a list -> 'a * 'a list * 'a
  val ilist : int -> int -> int list
  val ilist_null : int -> int -> int list
  val ilist_fail_null : int -> int -> int list
  val indx : 'a list -> int list
  val indx0 : 'a list -> int list
  val indxn : int -> 'a list -> int list
  val drop_evens : 'a list -> 'a list
  val really_drop_evens : 'a list -> 'a list
  val drop_odds : 'a list -> 'a list
  val tail_no_fail : 'a list -> 'a list
  val ( @@ ) : 'a list -> 'a list -> 'a list
  val replaceinlist : ('-> bool) -> '-> 'a list -> 'a list
  val index : ('-> bool) -> 'a list -> int
  val split_around : ('-> bool) -> 'a list -> 'a list list
  val i32ofi : int -> int32
  val i32toi : int32 -> int
  val i32tof : int32 -> float
  val i32add : int32 -> int32 -> int32
  val i32sub : int32 -> int32 -> int32
  val i32div : int32 -> int32 -> int32
  val i32mul : int32 -> int32 -> int32
  val sr32 : int32 -> int -> int32
  val lsr32 : int32 -> int -> int32
  val lsl32 : int32 -> int -> int32
  val lor32 : int32 -> int32 -> int32
  val land32 : int32 -> int32 -> int32
  val lnot32 : int32 -> int32
  val lxor32 : int32 -> int32 -> int32
  val i32succ : int32 -> int32
  val i32pred : int32 -> int32
  val i32max : int32 -> int32 -> int32
  val i32min : int32 -> int32 -> int32
  val i64ofi : int -> int64
  val i64toi : int64 -> int
  val i64tof : int64 -> float
  val i64add : int64 -> int64 -> int64
  val i64sub : int64 -> int64 -> int64
  val i64div : int64 -> int64 -> int64
  val i64mul : int64 -> int64 -> int64
  val sr64 : int64 -> int -> int64
  val lsr64 : int64 -> int -> int64
  val lsl64 : int64 -> int -> int64
  val lor64 : int64 -> int64 -> int64
  val land64 : int64 -> int64 -> int64
  val lnot64 : int64 -> int64
  val lxor64 : int64 -> int64 -> int64
  val i64succ : int64 -> int64
  val i64pred : int64 -> int64
  val i64max : int64 -> int64 -> int64
  val i64min : int64 -> int64 -> int64
  val i32ofi64 : int64 -> int32
  val i64ofi32 : int32 -> int64
  val lookup : '-> ('a * 'b) list -> 'b option
  val lookup_failnull : '-> ('a * 'b) list -> 'b
  val add : '-> '-> ('a * 'b) list -> ('a * 'b) list
  val replace : '-> '-> ('a * 'b) list -> ('a * 'b) list
  val remove : '-> ('a * 'b) list -> ('a * 'b) list
  val mergedict : ('a * 'b) list -> ('a * 'b) list -> ('a * 'b) list
  val set : bool Stdlib.ref -> unit
  val clear : bool Stdlib.ref -> unit
  val flip : bool Stdlib.ref -> unit
  val ( += ) : int Stdlib.ref -> int -> unit
  val ( -= ) : int Stdlib.ref -> int -> unit
  val ( /= ) : int Stdlib.ref -> int -> unit
  val ( *= ) : int Stdlib.ref -> int -> unit
  val ( +.= ) : float Stdlib.ref -> float -> unit
  val ( -.= ) : float Stdlib.ref -> float -> unit
  val ( /.= ) : float Stdlib.ref -> float -> unit
  val ( *.= ) : float Stdlib.ref -> float -> unit
  val ( =| ) : 'a list Stdlib.ref -> '-> unit
  val ( =@ ) : 'a list Stdlib.ref -> 'a list -> unit
  type vector = float * float
  val mkvector : float * float -> float * float -> Pdfutil.vector
  val invert : Pdfutil.vector -> Pdfutil.vector
  val offset_point : Pdfutil.vector -> float * float -> Pdfutil.vector
  val perpendicular : 'a * float -> float * 'a
  val sqr : float -> float
  val veclength : Pdfutil.vector -> float
  val scalevectolength : float -> Pdfutil.vector -> Pdfutil.vector
  val mkunitvector : float * float -> float * float -> Pdfutil.vector
  val between : float * float -> float * float -> float * float
  val distance_between : float * float -> float * float -> float
  val round : float -> float
  val iround : float -> int
  val largest_pow2_divisible : int -> int
  val pow2lt : int -> int
  val pow2gt : int -> int
  val log2of : int -> int
  val pow : int -> int -> int
  val compare_i : int -> int -> int
  val min : int -> int -> int
  val max : int -> int -> int
  val fmin : float -> float -> float
  val fmax : float -> float -> float
  val fabs : float -> float
  val even : int -> bool
  val odd : int -> bool
  val pi : float
  val root2 : float
  val rad_of_deg : float -> float
  val deg_of_rad : float -> float
  val sign_extend : int -> int -> int
  val isdigit : char -> bool
  val toint : float -> int
  val safe_float : float -> float
  val some : 'a option -> bool
  val none : 'a option -> bool
  val unopt : 'a option -> 'a
  val null_hash : unit -> ('a, 'b) Stdlib.Hashtbl.t
  val tryfind : ('a, 'b) Stdlib.Hashtbl.t -> '-> 'b option
  val list_of_hashtbl : ('a, 'b) Stdlib.Hashtbl.t -> ('a * 'b) list
  val hashtable_of_dictionary : ('a * 'b) list -> ('a, 'b) Stdlib.Hashtbl.t
  val hashset_of_list : 'a list -> ('a, unit) Stdlib.Hashtbl.t
  type 'a tree = Lf | Br of 'a * 'Pdfutil.tree * 'Pdfutil.tree
  val array_iter2 : ('-> '-> unit) -> 'a array -> 'b array -> unit
  val array_map2 : ('-> '-> 'c) -> 'a array -> 'b array -> 'c array
  val swap : 'a array -> int -> int -> unit
  val set_array : 'a array -> '-> unit
  val memoize : (unit -> 'a) -> unit -> 'a
  val ident : '-> 'a
  val applyn : ('-> 'a) -> int -> '-> 'a
  val ( <| ) : ('-> 'b) -> '-> 'b
  val mkunit : ('-> 'b) -> '-> unit -> 'b
  val tuple : '-> '-> 'a * 'b
  val conspair : ('a * 'b) * ('a list * 'b list) -> 'a list * 'b list
  val conspairopt :
    ('a option * 'b option) * ('a list * 'b list) -> 'a list * 'b list
  val pairs_of_list : 'a list -> ('a * 'a) list
  val do_return : (unit -> 'a) -> (unit -> 'b) -> 'a
  val do_many : (unit -> unit) -> int -> unit
  val eq : '-> '-> bool
  val neq : '-> '-> bool
  val rev_compare : '-> '-> int
  val always : '-> bool
  val never : '-> bool
  val ( |&| ) : bool -> bool -> bool
  val notpred : ('-> bool) -> '-> bool
  val box_union :
    int * int * int * int -> int * int * int * int -> int * int * int * int
  val box_union_float :
    float * float * float * float ->
    float * float * float * float -> float * float * float * float
  val box_overlap :
    int ->
    int ->
    int -> int -> int -> int -> int -> int -> (int * int * int * int) option
  val box_overlap_float :
    float ->
    float ->
    float ->
    float ->
    float ->
    float -> float -> float -> (float * float * float * float) option
  val leafnames_of_dir : string -> string list
  val contents_of_file : string -> string
  val roman_upper : int -> string
  val roman_lower : int -> string
  val tt' : unit -> unit
end