functor (Info : sig val name : string end->
  sig val next : unit -> int val self : State.t end