functor (Item : ItemEq->
  sig
    module I : ItemEq
    type item = Item.t
    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