sig
  type key = Dm_atomic.atomicValue
  type 'a pair = Dm_atomic_btree.key * 'a
  type position = int
  type 'a btree = 'Dm_atomic_btree.pair array
  val min_typed_value :
    'Dm_atomic_btree.btree ->
    Dm_atomic_btree.key -> Dm_atomic_btree.position
  val max_typed_value :
    'Dm_atomic_btree.btree ->
    Dm_atomic_btree.key -> Dm_atomic_btree.position
  val find_low_point :
    'Dm_atomic_btree.btree ->
    Dm_atomic_btree.key -> Dm_atomic_btree.position
  val find_high_point :
    'Dm_atomic_btree.btree ->
    Dm_atomic_btree.key -> Dm_atomic_btree.position
  val previous_highest_value :
    'Dm_atomic_btree.btree ->
    Dm_atomic_btree.key ->
    Dm_atomic_btree.position -> Dm_atomic_btree.position
  val next_lowest_value :
    'Dm_atomic_btree.btree ->
    Dm_atomic_btree.key ->
    Dm_atomic_btree.position -> Dm_atomic_btree.position
  val max_position : 'Dm_atomic_btree.btree -> Dm_atomic_btree.position
  val min_position : 'Dm_atomic_btree.btree -> Dm_atomic_btree.position
  val position_before :
    Dm_atomic_btree.position -> Dm_atomic_btree.position -> bool
  val position_after :
    Dm_atomic_btree.position -> Dm_atomic_btree.position -> bool
  val first : 'Dm_atomic_btree.btree -> Dm_atomic_btree.key
  val last : 'Dm_atomic_btree.btree -> Dm_atomic_btree.key
  val sub :
    'Dm_atomic_btree.btree ->
    Dm_atomic_btree.position ->
    Dm_atomic_btree.position -> 'Dm_atomic_btree.btree
  val to_list : 'Dm_atomic_btree.btree -> 'a list
  type 'a bulk_loader
  val init : ('-> '-> int) -> 'Dm_atomic_btree.bulk_loader
  val single_add :
    'Dm_atomic_btree.bulk_loader -> Dm_atomic_btree.key * '-> unit
  val bulk_add :
    'Dm_atomic_btree.bulk_loader -> (Dm_atomic_btree.key * 'a) list -> unit
  val finalize : 'Dm_atomic_btree.bulk_loader -> 'Dm_atomic_btree.btree
  val finalize_sorted :
    'Dm_atomic_btree.bulk_loader -> 'Dm_atomic_btree.btree
  val reset : 'Dm_atomic_btree.bulk_loader -> unit
end