sig
  type 'a t
  val empty : ('a -> int array) -> 'a FeatureTree.t
  val of_list : ('a -> int array) -> 'a list -> 'a FeatureTree.t
  val insert : 'a -> 'a FeatureTree.t -> 'a FeatureTree.t
  val features : 'a FeatureTree.t -> 'a -> int array
  val find_leq : int array -> ('a -> bool) -> 'a FeatureTree.t -> 'a
  val find_leq_map : int array -> ('a -> 'b option) -> 'a FeatureTree.t -> 'b
  val remove :
    ('a -> 'a -> bool) -> 'a -> 'a FeatureTree.t -> 'a FeatureTree.t
  val rebalance : 'a FeatureTree.t -> 'a FeatureTree.t
  val enum : 'a FeatureTree.t -> 'a BatEnum.t
end