sig   type ('a, 'b) t = ('a, 'b) Hashtbl.t   val create : int -> ('a, 'b) BatHashtbl.t   val length : ('a, 'b) BatHashtbl.t -> int   val is_empty : ('a, 'b) BatHashtbl.t -> bool   val add : ('a, 'b) BatHashtbl.t -> '-> '-> unit   val remove : ('a, 'b) BatHashtbl.t -> '-> unit   val remove_all : ('a, 'b) BatHashtbl.t -> '-> unit   val replace : ('a, 'b) BatHashtbl.t -> '-> '-> unit   val modify : '-> ('-> 'b) -> ('a, 'b) BatHashtbl.t -> unit   val modify_def : '-> '-> ('-> 'b) -> ('a, 'b) BatHashtbl.t -> unit   val modify_opt :     '-> ('b option -> 'b option) -> ('a, 'b) BatHashtbl.t -> unit   val copy : ('a, 'b) BatHashtbl.t -> ('a, 'b) BatHashtbl.t   val clear : ('a, 'b) BatHashtbl.t -> unit   val keys : ('a, 'b) BatHashtbl.t -> 'BatEnum.t   val values : ('a, 'b) BatHashtbl.t -> 'BatEnum.t   val enum : ('a, 'b) BatHashtbl.t -> ('a * 'b) BatEnum.t   val of_enum : ('a * 'b) BatEnum.t -> ('a, 'b) BatHashtbl.t   val find : ('a, 'b) BatHashtbl.t -> '-> 'b   val find_all : ('a, 'b) BatHashtbl.t -> '-> 'b list   val find_default : ('a, 'b) BatHashtbl.t -> '-> '-> 'b   val find_option : ('a, 'b) Hashtbl.t -> '-> 'b option   val mem : ('a, 'b) BatHashtbl.t -> '-> bool   val iter : ('-> '-> unit) -> ('a, 'b) BatHashtbl.t -> unit   val fold : ('-> '-> '-> 'c) -> ('a, 'b) BatHashtbl.t -> '-> 'c   val map :     ('-> '-> 'c) -> ('a, 'b) BatHashtbl.t -> ('a, 'c) BatHashtbl.t   val map_inplace : ('-> '-> 'b) -> ('a, 'b) BatHashtbl.t -> unit   val filter :     ('-> bool) -> ('key, 'a) BatHashtbl.t -> ('key, 'a) BatHashtbl.t   val filter_inplace : ('-> bool) -> ('key, 'a) BatHashtbl.t -> unit   val filteri :     ('key -> '-> bool) ->     ('key, 'a) BatHashtbl.t -> ('key, 'a) BatHashtbl.t   val filteri_inplace :     ('key -> '-> bool) -> ('key, 'a) BatHashtbl.t -> unit   val filter_map :     ('key -> '-> 'b option) ->     ('key, 'a) BatHashtbl.t -> ('key, 'b) BatHashtbl.t   val filter_map_inplace :     ('key -> '-> 'a option) -> ('key, 'a) BatHashtbl.t -> unit   val hash : '-> int   external hash_param : int -> int -> '-> int = "caml_hash_univ_param"     [@@noalloc]   val print :     ?first:string ->     ?last:string ->     ?sep:string ->     ?kvsep:string ->     ('BatInnerIO.output -> '-> unit) ->     ('BatInnerIO.output -> '-> unit) ->     'BatInnerIO.output -> ('b, 'c) BatHashtbl.t -> unit   module Exceptionless :     sig       val find : ('a, 'b) BatHashtbl.t -> '-> 'b option       val modify :         '->         ('-> 'b) ->         ('a, 'b) BatHashtbl.t -> (unit, exn) BatPervasives.result     end   module Infix :     sig       val ( --> ) : ('a, 'b) BatHashtbl.t -> '-> 'b       val ( <-- ) : ('a, 'b) BatHashtbl.t -> 'a * '-> unit     end   module Labels :     sig       val add : ('a, 'b) BatHashtbl.t -> key:'-> data:'-> unit       val replace : ('a, 'b) BatHashtbl.t -> key:'-> data:'-> unit       val iter :         f:(key:'-> data:'-> unit) -> ('a, 'b) BatHashtbl.t -> unit       val map :         f:(key:'-> data:'-> 'c) ->         ('a, 'b) BatHashtbl.t -> ('a, 'c) BatHashtbl.t       val map_inplace :         f:(key:'-> data:'-> 'b) -> ('a, 'b) BatHashtbl.t -> unit       val filter :         f:('-> bool) -> ('key, 'a) BatHashtbl.t -> ('key, 'a) BatHashtbl.t       val filter_inplace : f:('-> bool) -> ('key, 'a) BatHashtbl.t -> unit       val filteri :         f:(key:'key -> data:'-> bool) ->         ('key, 'a) BatHashtbl.t -> ('key, 'a) BatHashtbl.t       val filteri_inplace :         f:(key:'key -> data:'-> bool) -> ('key, 'a) BatHashtbl.t -> unit       val filter_map :         f:(key:'key -> data:'-> 'b option) ->         ('key, 'a) BatHashtbl.t -> ('key, 'b) BatHashtbl.t       val filter_map_inplace :         f:(key:'key -> data:'-> 'a option) ->         ('key, 'a) BatHashtbl.t -> unit       val fold :         f:(key:'-> data:'-> '-> 'c) ->         ('a, 'b) BatHashtbl.t -> init:'-> 'c       val modify : key:'-> f:('-> 'b) -> ('a, 'b) BatHashtbl.t -> unit       val modify_def :         default:'-> key:'-> f:('-> 'b) -> ('a, 'b) BatHashtbl.t -> unit       val modify_opt :         key:'-> f:('b option -> 'b option) -> ('a, 'b) BatHashtbl.t -> unit     end   module type HashedType =     sig       type t       val equal : BatHashtbl.HashedType.t -> BatHashtbl.HashedType.t -> bool       val hash : BatHashtbl.HashedType.t -> int     end   module type S =     sig       type key       type 'a t       val create : int -> 'BatHashtbl.S.t       val length : 'BatHashtbl.S.t -> int       val is_empty : 'BatHashtbl.S.t -> bool       val clear : 'BatHashtbl.S.t -> unit       val copy : 'BatHashtbl.S.t -> 'BatHashtbl.S.t       val add : 'BatHashtbl.S.t -> BatHashtbl.S.key -> '-> unit       val remove : 'BatHashtbl.S.t -> BatHashtbl.S.key -> unit       val remove_all : 'BatHashtbl.S.t -> BatHashtbl.S.key -> unit       val find : 'BatHashtbl.S.t -> BatHashtbl.S.key -> 'a       val find_all : 'BatHashtbl.S.t -> BatHashtbl.S.key -> 'a list       val find_default : 'BatHashtbl.S.t -> BatHashtbl.S.key -> '-> 'a       val find_option : 'BatHashtbl.S.t -> BatHashtbl.S.key -> 'a option       val replace : 'BatHashtbl.S.t -> BatHashtbl.S.key -> '-> unit       val mem : 'BatHashtbl.S.t -> BatHashtbl.S.key -> bool       val iter :         (BatHashtbl.S.key -> '-> unit) -> 'BatHashtbl.S.t -> unit       val fold :         (BatHashtbl.S.key -> '-> '-> 'b) -> 'BatHashtbl.S.t -> '-> 'b       val map :         (BatHashtbl.S.key -> '-> 'c) ->         'BatHashtbl.S.t -> 'BatHashtbl.S.t       val map_inplace :         (BatHashtbl.S.key -> '-> 'a) -> 'BatHashtbl.S.t -> unit       val filter : ('-> bool) -> 'BatHashtbl.S.t -> 'BatHashtbl.S.t       val filter_inplace : ('-> bool) -> 'BatHashtbl.S.t -> unit       val filteri :         (BatHashtbl.S.key -> '-> bool) ->         'BatHashtbl.S.t -> 'BatHashtbl.S.t       val filteri_inplace :         (BatHashtbl.S.key -> '-> bool) -> 'BatHashtbl.S.t -> unit       val filter_map :         (BatHashtbl.S.key -> '-> 'b option) ->         'BatHashtbl.S.t -> 'BatHashtbl.S.t       val filter_map_inplace :         (BatHashtbl.S.key -> '-> 'a option) -> 'BatHashtbl.S.t -> unit       val modify :         BatHashtbl.S.key -> ('-> 'a) -> 'BatHashtbl.S.t -> unit       val modify_def :         '-> BatHashtbl.S.key -> ('-> 'a) -> 'BatHashtbl.S.t -> unit       val modify_opt :         BatHashtbl.S.key ->         ('a option -> 'a option) -> 'BatHashtbl.S.t -> unit       val keys : 'BatHashtbl.S.t -> BatHashtbl.S.key BatEnum.t       val values : 'BatHashtbl.S.t -> 'BatEnum.t       val enum : 'BatHashtbl.S.t -> (BatHashtbl.S.key * 'a) BatEnum.t       val of_enum : (BatHashtbl.S.key * 'a) BatEnum.t -> 'BatHashtbl.S.t       val print :         ?first:string ->         ?last:string ->         ?sep:string ->         ('BatInnerIO.output -> BatHashtbl.S.key -> unit) ->         ('BatInnerIO.output -> '-> unit) ->         'BatInnerIO.output -> 'BatHashtbl.S.t -> unit       module Exceptionless :         sig           val find : 'BatHashtbl.S.t -> BatHashtbl.S.key -> 'a option           val modify :             BatHashtbl.S.key ->             ('-> 'a) ->             'BatHashtbl.S.t -> (unit, exn) BatPervasives.result         end       module Infix :         sig           val ( --> ) : 'BatHashtbl.S.t -> BatHashtbl.S.key -> 'a           val ( <-- ) : 'BatHashtbl.S.t -> BatHashtbl.S.key * '-> unit         end       module Labels :         sig           val add :             'BatHashtbl.S.t -> key:BatHashtbl.S.key -> data:'-> unit           val replace :             'BatHashtbl.S.t -> key:BatHashtbl.S.key -> data:'-> unit           val iter :             f:(key:BatHashtbl.S.key -> data:'-> unit) ->             'BatHashtbl.S.t -> unit           val map :             f:(key:BatHashtbl.S.key -> data:'-> 'b) ->             'BatHashtbl.S.t -> 'BatHashtbl.S.t           val map_inplace :             f:(key:BatHashtbl.S.key -> data:'-> 'a) ->             'BatHashtbl.S.t -> unit           val filter :             f:('-> bool) -> 'BatHashtbl.S.t -> 'BatHashtbl.S.t           val filter_inplace : f:('-> bool) -> 'BatHashtbl.S.t -> unit           val filteri :             f:(key:BatHashtbl.S.key -> data:'-> bool) ->             'BatHashtbl.S.t -> 'BatHashtbl.S.t           val filteri_inplace :             f:(key:BatHashtbl.S.key -> data:'-> bool) ->             'BatHashtbl.S.t -> unit           val filter_map :             f:(key:BatHashtbl.S.key -> data:'-> 'b option) ->             'BatHashtbl.S.t -> 'BatHashtbl.S.t           val filter_map_inplace :             f:(key:BatHashtbl.S.key -> data:'-> 'a option) ->             'BatHashtbl.S.t -> unit           val fold :             f:(key:BatHashtbl.S.key -> data:'-> '-> 'b) ->             'BatHashtbl.S.t -> init:'-> 'b           val modify :             key:BatHashtbl.S.key -> f:('-> 'a) -> 'BatHashtbl.S.t -> unit           val modify_def :             default:'->             key:BatHashtbl.S.key -> f:('-> 'a) -> 'BatHashtbl.S.t -> unit           val modify_opt :             key:BatHashtbl.S.key ->             f:('a option -> 'a option) -> 'BatHashtbl.S.t -> unit         end     end   module Make :     functor (H : HashedType->       sig         type key = H.t         type 'a t         val create : int -> 'a t         val length : 'a t -> int         val is_empty : 'a t -> bool         val clear : 'a t -> unit         val copy : 'a t -> 'a t         val add : 'a t -> key -> '-> unit         val remove : 'a t -> key -> unit         val remove_all : 'a t -> key -> unit         val find : 'a t -> key -> 'a         val find_all : 'a t -> key -> 'a list         val find_default : 'a t -> key -> '-> 'a         val find_option : 'a t -> key -> 'a option         val replace : 'a t -> key -> '-> unit         val mem : 'a t -> key -> bool         val iter : (key -> '-> unit) -> 'a t -> unit         val fold : (key -> '-> '-> 'b) -> 'a t -> '-> 'b         val map : (key -> '-> 'c) -> 'b t -> 'c t         val map_inplace : (key -> '-> 'a) -> 'a t -> unit         val filter : ('-> bool) -> 'a t -> 'a t         val filter_inplace : ('-> bool) -> 'a t -> unit         val filteri : (key -> '-> bool) -> 'a t -> 'a t         val filteri_inplace : (key -> '-> bool) -> 'a t -> unit         val filter_map : (key -> '-> 'b option) -> 'a t -> 'b t         val filter_map_inplace : (key -> '-> 'a option) -> 'a t -> unit         val modify : key -> ('-> 'a) -> 'a t -> unit         val modify_def : '-> key -> ('-> 'a) -> 'a t -> unit         val modify_opt : key -> ('a option -> 'a option) -> 'a t -> unit         val keys : 'a t -> key BatEnum.t         val values : 'a t -> 'BatEnum.t         val enum : 'a t -> (key * 'a) BatEnum.t         val of_enum : (key * 'a) BatEnum.t -> 'a t         val print :           ?first:string ->           ?last:string ->           ?sep:string ->           ('BatInnerIO.output -> key -> unit) ->           ('BatInnerIO.output -> '-> unit) ->           'BatInnerIO.output -> 'b t -> unit         module Exceptionless :           sig             val find : 'a t -> key -> 'a option             val modify :               key -> ('-> 'a) -> 'a t -> (unit, exn) BatPervasives.result           end         module Infix :           sig             val ( --> ) : 'a t -> key -> 'a             val ( <-- ) : 'a t -> key * '-> unit           end         module Labels :           sig             val add : 'a t -> key:key -> data:'-> unit             val replace : 'a t -> key:key -> data:'-> unit             val iter : f:(key:key -> data:'-> unit) -> 'a t -> unit             val map : f:(key:key -> data:'-> 'b) -> 'a t -> 'b t             val map_inplace : f:(key:key -> data:'-> 'a) -> 'a t -> unit             val filter : f:('-> bool) -> 'a t -> 'a t             val filter_inplace : f:('-> bool) -> 'a t -> unit             val filteri : f:(key:key -> data:'-> bool) -> 'a t -> 'a t             val filteri_inplace :               f:(key:key -> data:'-> bool) -> 'a t -> unit             val filter_map :               f:(key:key -> data:'-> 'b option) -> 'a t -> 'b t             val filter_map_inplace :               f:(key:key -> data:'-> 'a option) -> 'a t -> unit             val fold :               f:(key:key -> data:'-> '-> 'b) -> 'a t -> init:'-> 'b             val modify : key:key -> f:('-> 'a) -> 'a t -> unit             val modify_def :               default:'-> key:key -> f:('-> 'a) -> 'a t -> unit             val modify_opt :               key:key -> f:('a option -> 'a option) -> 'a t -> unit           end       end   module Cap :     sig       type ('a, 'b, 'c) t constraint 'c = [< `Read | `Write ]       val create : int -> ('a, 'b, [< `Read | `Write ]) BatHashtbl.Cap.t       external of_table :         ('a, 'b) Hashtbl.t -> ('a, 'b, [< `Read | `Write ]) BatHashtbl.Cap.t         = "%identity"       external to_table :         ('a, 'b, [ `Read | `Write ]) BatHashtbl.Cap.t -> ('a, 'b) Hashtbl.t         = "%identity"       external read_only :         ('a, 'b, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t ->         ('a, 'b, [ `Read ]) BatHashtbl.Cap.t = "%identity"       external write_only :         ('a, 'b, [< `Read | `Write > `Write ]) BatHashtbl.Cap.t ->         ('a, 'b, [ `Write ]) BatHashtbl.Cap.t = "%identity"       val length : ('a, 'b, [< `Read | `Write ]) BatHashtbl.Cap.t -> int       val is_empty : ('a, 'b, [< `Read | `Write ]) BatHashtbl.Cap.t -> bool       val add :         ('a, 'b, [< `Read | `Write > `Write ]) BatHashtbl.Cap.t ->         '-> '-> unit       val remove :         ('a, 'b, [< `Read | `Write > `Write ]) BatHashtbl.Cap.t -> '-> unit       val remove_all :         ('a, 'b, [< `Read | `Write > `Write ]) BatHashtbl.Cap.t -> '-> unit       val replace :         ('a, 'b, [< `Read | `Write > `Write ]) BatHashtbl.Cap.t ->         '-> '-> unit       val copy :         ('a, 'b, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t ->         ('a, 'b, [< `Read | `Write ]) BatHashtbl.Cap.t       val clear :         ('a, 'b, [< `Read | `Write > `Write ]) BatHashtbl.Cap.t -> unit       val find :         ('a, 'b, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t -> '-> 'b       val find_all :         ('a, 'b, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t ->         '-> 'b list       val find_default :         ('a, 'b, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t ->         '-> '-> 'b       val find_option :         ('a, 'b, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t ->         '-> 'b option       val mem :         ('a, 'b, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t -> '-> bool       val iter :         ('-> '-> unit) ->         ('a, 'b, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t -> unit       val fold :         ('-> '-> '-> 'c) ->         ('a, 'b, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t -> '-> 'c       val map :         ('-> '-> 'c) ->         ('a, 'b, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t ->         ('a, 'c, [< `Read | `Write ]) BatHashtbl.Cap.t       val map_inplace :         ('-> '-> 'b) ->         ('a, 'b, [< `Read | `Write > `Write ]) BatHashtbl.Cap.t -> unit       val filter :         ('-> bool) ->         ('key, 'a, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t ->         ('key, 'a, [< `Read | `Write ]) BatHashtbl.Cap.t       val filter_inplace :         ('-> bool) ->         ('key, 'a, [< `Read | `Write > `Write ]) BatHashtbl.Cap.t -> unit       val filteri :         ('key -> '-> bool) ->         ('key, 'a, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t ->         ('key, 'a, [< `Read | `Write ]) BatHashtbl.Cap.t       val filteri_inplace :         ('key -> '-> bool) ->         ('key, 'a, [< `Read | `Write > `Write ]) BatHashtbl.Cap.t -> unit       val filter_map :         ('key -> '-> 'b option) ->         ('key, 'a, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t ->         ('key, 'b, [< `Read | `Write ]) BatHashtbl.Cap.t       val filter_map_inplace :         ('key -> '-> 'a option) ->         ('key, 'a, [< `Read | `Write > `Write ]) BatHashtbl.Cap.t -> unit       val keys :         ('a, 'b, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t ->         'BatEnum.t       val values :         ('a, 'b, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t ->         'BatEnum.t       val enum :         ('a, 'b, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t ->         ('a * 'b) BatEnum.t       val of_enum :         ('a * 'b) BatEnum.t -> ('a, 'b, [< `Read | `Write ]) BatHashtbl.Cap.t       val print :         ?first:string ->         ?last:string ->         ?sep:string ->         ?kvsep:string ->         ('BatInnerIO.output -> '-> unit) ->         ('BatInnerIO.output -> '-> unit) ->         'BatInnerIO.output ->         ('b, 'c, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t -> unit       module Exceptionless :         sig           val find :             ('a, 'b, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t ->             '-> 'b option           val modify :             '->             ('-> 'b) ->             ('a, 'b, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t ->             (unit, exn) BatPervasives.result         end       module Labels :         sig           val add :             ('a, 'b, [< `Read | `Write > `Write ]) BatHashtbl.Cap.t ->             key:'-> data:'-> unit           val replace :             ('a, 'b, [< `Read | `Write > `Write ]) BatHashtbl.Cap.t ->             key:'-> data:'-> unit           val iter :             f:(key:'-> data:'-> unit) ->             ('a, 'b, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t -> unit           val map :             f:(key:'-> data:'-> 'c) ->             ('a, 'b, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t ->             ('a, 'c, [< `Read | `Write ]) BatHashtbl.Cap.t           val map_inplace :             f:(key:'-> data:'-> 'b) ->             ('a, 'b, [< `Read | `Write > `Write ]) BatHashtbl.Cap.t -> unit           val filter :             f:('-> bool) ->             ('key, 'a, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t ->             ('key, 'a, [< `Read | `Write ]) BatHashtbl.Cap.t           val filter_inplace :             f:('-> bool) ->             ('key, 'a, [< `Read | `Write > `Write ]) BatHashtbl.Cap.t -> unit           val filteri :             f:(key:'key -> data:'-> bool) ->             ('key, 'a, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t ->             ('key, 'a, [< `Read | `Write ]) BatHashtbl.Cap.t           val filteri_inplace :             f:(key:'key -> data:'-> bool) ->             ('key, 'a, [< `Read | `Write > `Write ]) BatHashtbl.Cap.t -> unit           val filter_map :             f:(key:'key -> data:'-> 'b option) ->             ('key, 'a, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t ->             ('key, 'b, [< `Read | `Write ]) BatHashtbl.Cap.t           val filter_map_inplace :             f:(key:'key -> data:'-> 'a option) ->             ('key, 'a, [< `Read | `Write > `Write ]) BatHashtbl.Cap.t -> unit           val fold :             f:(key:'-> data:'-> '-> 'c) ->             ('a, 'b, [< `Read | `Write > `Read ]) BatHashtbl.Cap.t ->             init:'-> 'c         end     end end