sig
  type t
  val empty : Flex_state.t
  type 'a key
  val create_key : unit -> 'Flex_state.key
  val add : 'Flex_state.key -> '-> Flex_state.t -> Flex_state.t
  val get : 'Flex_state.key -> Flex_state.t -> 'a option
  val get_exn : 'Flex_state.key -> Flex_state.t -> 'a
  val get_or : or_:'-> 'Flex_state.key -> Flex_state.t -> 'a
end