functor
  (Info : sig
            val name : string
            val dependencies : State.t list
            val default : unit -> bool
          end)
  ->
  sig
    val self : State.t
    val name : string
    val mark_as_computed : ?project:Project.t -> unit -> unit
    val is_computed : ?project:Project.t -> unit -> bool
    module Datatype : Datatype.S
    val add_hook_on_update : (Datatype.t -> unit) -> unit
    val howto_marshal : (Datatype.t -> 'a) -> ('-> Datatype.t) -> unit
    type data = bool
    val set : data -> unit
    val get : unit -> data
    val clear : unit -> unit
  end