sig
  module I : ItemEq
  type item
  and 'a table
  val create : ('-> '-> bool) * ('-> string) -> 'Table.Table.table
  val mem : 'Table.Table.table -> '-> bool
  val add : 'Table.Table.table -> '-> Table.Table.item -> unit
  val rm : 'Table.Table.table -> '-> unit
  val lookup : 'Table.Table.table -> '-> Table.Table.item
  val rev_lookup : 'Table.Table.table -> Table.Table.item -> 'a list
  val lookup_all : 'Table.Table.table -> '-> Table.Table.item list
  val iter : ('-> Table.Table.item -> unit) -> 'Table.Table.table -> unit
  val eq : 'Table.Table.table -> '-> '-> bool
  val to_string : 'Table.Table.table -> '-> string
end