sig
  exception GotSignal of int
  val withTimeout : float -> (int -> 'a) -> ('-> 'a) -> '-> 'a
  val docHash :
    ('-> '-> 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 : '-> '-> int
  val list_drop : int -> 'a list -> 'a list
  val list_span : ('-> bool) -> 'a list -> 'a list * 'a list
  val list_insert_by : ('-> '-> int) -> '-> 'a list -> 'a list
  val list_head_default : '-> 'a list -> 'a
  val list_iter3 :
    ('-> '-> '-> unit) -> 'a list -> 'b list -> 'c list -> unit
  val get_some_option_list : 'a option list -> 'a list
  val list_iteri : (int -> '-> unit) -> 'a list -> unit
  val list_mapi : (int -> '-> 'b) -> 'a list -> 'b list
  val list_fold_lefti : ('-> int -> '-> 'a) -> '-> 'b list -> 'a
  val int_range_list : int -> int -> int list
  val list_init : int -> (int -> 'a) -> 'a list
  val mapNoCopy : ('-> 'a) -> 'a list -> 'a list
  val mapNoCopyList : ('-> 'a list) -> 'a list -> 'a list
  val filterNoCopy : ('-> bool) -> 'a list -> 'a list
  type 'a growArrayFill = Elem of '| Susp of (int -> 'a)
  type 'a growArray = {
    gaFill : 'Flx_cil_util.growArrayFill;
    mutable gaMaxInitIndex : int;
    mutable gaData : 'a array;
  }
  val newGrowArray :
    int -> 'Flx_cil_util.growArrayFill -> 'Flx_cil_util.growArray
  val getReg : 'Flx_cil_util.growArray -> int -> 'a
  val setReg : 'Flx_cil_util.growArray -> int -> '-> unit
  val copyGrowArray : 'Flx_cil_util.growArray -> 'Flx_cil_util.growArray
  val deepCopyGrowArray :
    'Flx_cil_util.growArray -> ('-> 'a) -> 'Flx_cil_util.growArray
  val growArray_iteri :
    (int -> '-> unit) -> 'Flx_cil_util.growArray -> unit
  val growArray_foldl :
    ('-> '-> 'a) -> '-> 'Flx_cil_util.growArray -> 'a
  val hasPrefix : string -> string -> bool
  val restoreRef : ?deepCopy:('-> 'a) -> 'Pervasives.ref -> unit -> unit
  val restoreHash :
    ?deepCopy:('-> 'a) -> ('b, 'a) Hashtbl.t -> unit -> unit
  val restoreArray : ?deepCopy:('-> 'a) -> 'a array -> unit -> unit
  val runThunks : (unit -> unit) list -> unit -> unit
  val memoize : ('a, 'b) Hashtbl.t -> '-> ('-> 'b) -> 'b
  val findOrAdd : ('a, 'b) Hashtbl.t -> '-> ('-> 'b) -> 'b
  val tryFinally : ('-> 'b) -> ('b option -> unit) -> '-> '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:'-> lo:int -> hi:int -> (int -> '-> 'a) -> 'a
  module type STACK =
    sig
      type 'a t
      exception Empty
      val create : unit -> 'Flx_cil_util.STACK.t
      val push : '-> 'Flx_cil_util.STACK.t -> unit
      val pop : 'Flx_cil_util.STACK.t -> 'a
      val top : 'Flx_cil_util.STACK.t -> 'a
      val clear : 'Flx_cil_util.STACK.t -> unit
      val copy : 'Flx_cil_util.STACK.t -> 'Flx_cil_util.STACK.t
      val is_empty : 'Flx_cil_util.STACK.t -> bool
      val length : 'Flx_cil_util.STACK.t -> int
      val iter : ('-> unit) -> '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