sig
  exception GotSignal of int
  val withTimeout : float -> (int -> 'a) -> ('b -> 'a) -> 'b -> 'a
  val docHash :
    ('a -> 'b -> Flx_cil_pretty.doc) ->
    unit -> ('a, 'b) Hashtbl.t -> Flx_cil_pretty.doc
  val hash_to_list : ('a, 'b) Hashtbl.t -> ('a * 'b) list
  val keys : ('a, 'b) Hashtbl.t -> 'a list
  val hash_copy_into : ('a, 'b) Hashtbl.t -> ('a, 'b) Hashtbl.t -> unit
  val anticompare : 'a -> 'a -> int
  val list_drop : int -> 'a list -> 'a list
  val list_span : ('a -> bool) -> 'a list -> 'a list * 'a list
  val list_insert_by : ('a -> 'a -> int) -> 'a -> 'a list -> 'a list
  val list_head_default : 'a -> 'a list -> 'a
  val list_iter3 :
    ('a -> 'b -> 'c -> unit) -> 'a list -> 'b list -> 'c list -> unit
  val get_some_option_list : 'a option list -> 'a list
  val list_iteri : (int -> 'a -> unit) -> 'a list -> unit
  val list_mapi : (int -> 'a -> 'b) -> 'a list -> 'b list
  val list_fold_lefti : ('a -> int -> 'b -> 'a) -> 'a -> 'b list -> 'a
  val int_range_list : int -> int -> int list
  val list_init : int -> (int -> 'a) -> 'a list
  val mapNoCopy : ('a -> 'a) -> 'a list -> 'a list
  val mapNoCopyList : ('a -> 'a list) -> 'a list -> 'a list
  val filterNoCopy : ('a -> bool) -> 'a list -> 'a list
  type 'a growArrayFill = Elem of 'a | Susp of (int -> 'a)
  type 'a growArray = {
    gaFill : 'a Flx_cil_util.growArrayFill;
    mutable gaMaxInitIndex : int;
    mutable gaData : 'a array;
  }
  val newGrowArray :
    int -> 'a Flx_cil_util.growArrayFill -> 'a Flx_cil_util.growArray
  val getReg : 'a Flx_cil_util.growArray -> int -> 'a
  val setReg : 'a Flx_cil_util.growArray -> int -> 'a -> unit
  val copyGrowArray : 'a Flx_cil_util.growArray -> 'a Flx_cil_util.growArray
  val deepCopyGrowArray :
    'a Flx_cil_util.growArray -> ('a -> 'a) -> 'a Flx_cil_util.growArray
  val growArray_iteri :
    (int -> 'a -> unit) -> 'a Flx_cil_util.growArray -> unit
  val growArray_foldl :
    ('a -> 'b -> 'a) -> 'a -> 'b Flx_cil_util.growArray -> 'a
  val hasPrefix : string -> string -> bool
  val restoreRef : ?deepCopy:('a -> 'a) -> 'a Pervasives.ref -> unit -> unit
  val restoreHash :
    ?deepCopy:('a -> 'a) -> ('b, 'a) Hashtbl.t -> unit -> unit
  val restoreArray : ?deepCopy:('a -> 'a) -> 'a array -> unit -> unit
  val runThunks : (unit -> unit) list -> unit -> unit
  val memoize : ('a, 'b) Hashtbl.t -> 'a -> ('a -> 'b) -> 'b
  val findOrAdd : ('a, 'b) Hashtbl.t -> 'a -> ('a -> 'b) -> 'b
  val tryFinally : ('a -> 'b) -> ('b option -> unit) -> 'a -> 'b
  type registerInfo = {
    rName : string;
    rGroup : string;
    rVal : Flx_cil_pretty.doc;
    rOneLineVal : Flx_cil_pretty.doc option;
  }
  val valOf : 'a option -> 'a
  val fold_for : init:'a -> lo:int -> hi:int -> (int -> 'a -> 'a) -> 'a
  module type STACK =
    sig
      type 'a t
      exception Empty
      val create : unit -> 'a Flx_cil_util.STACK.t
      val push : 'a -> 'a Flx_cil_util.STACK.t -> unit
      val pop : 'a Flx_cil_util.STACK.t -> 'a
      val top : 'a Flx_cil_util.STACK.t -> 'a
      val clear : 'a Flx_cil_util.STACK.t -> unit
      val copy : 'a Flx_cil_util.STACK.t -> 'a Flx_cil_util.STACK.t
      val is_empty : 'a Flx_cil_util.STACK.t -> bool
      val length : 'a Flx_cil_util.STACK.t -> int
      val iter : ('a -> unit) -> 'a Flx_cil_util.STACK.t -> unit
    end
  module Stack : STACK
  type configData =
      ConfInt of int
    | ConfBool of bool
    | ConfFloat of float
    | ConfString of string
    | ConfList of Flx_cil_util.configData list
  val loadConfiguration : string -> unit
  val saveConfiguration : string -> unit
  val clearConfiguration : unit -> unit
  val setConfiguration : string -> Flx_cil_util.configData -> unit
  val findConfiguration : string -> Flx_cil_util.configData
  val findConfigurationInt : string -> int
  val useConfigurationInt : string -> (int -> unit) -> unit
  val findConfigurationBool : string -> bool
  val useConfigurationBool : string -> (bool -> unit) -> unit
  val findConfigurationString : string -> string
  val useConfigurationString : string -> (string -> unit) -> unit
  val findConfigurationList : string -> Flx_cil_util.configData list
  val useConfigurationList :
    string -> (Flx_cil_util.configData list -> unit) -> unit
  type symbol = int
  val symbolName : Flx_cil_util.symbol -> string
  val registerSymbolName : string -> Flx_cil_util.symbol
  val registerSymbolRange : int -> (int -> string) -> Flx_cil_util.symbol
end