sig
  val self : State.t
  val name : string
  val kind : State.kind
  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 key
  type data
  val add :
    string ->
    State_builder.Dashtbl.key ->
    State.t list -> State_builder.Dashtbl.data -> unit
  val replace :
    reset:bool ->
    string ->
    State_builder.Dashtbl.key ->
    State.t list -> State_builder.Dashtbl.data -> unit
  val memo :
    reset:bool ->
    (State_builder.Dashtbl.data list -> State_builder.Dashtbl.data) ->
    string ->
    State_builder.Dashtbl.key -> State.t list -> State_builder.Dashtbl.data
  val clear : reset:bool -> unit -> unit
  val remove : reset:bool -> State_builder.Dashtbl.key -> State.t -> unit
  val remove_all : reset:bool -> State_builder.Dashtbl.key -> unit
  val filter :
    reset:bool ->
    (State_builder.Dashtbl.key ->
     State.t option -> State_builder.Dashtbl.data -> bool) ->
    State_builder.Dashtbl.key -> unit
  val mem : State_builder.Dashtbl.key -> bool
  val is_local : State.t -> bool
  val find :
    ?who:State.t list ->
    State_builder.Dashtbl.key ->
    State.t -> State_builder.Dashtbl.data * State.t
  val find_key : State.t -> (State_builder.Dashtbl.key * State.t) list
  val find_data :
    ?who:State.t list ->
    State_builder.Dashtbl.key -> State.t -> State_builder.Dashtbl.data
  val find_state :
    ?who:State.t list -> State_builder.Dashtbl.key -> State.t -> State.t
  val find_all_local :
    ?who:State.t list ->
    State_builder.Dashtbl.key ->
    State.t -> (State_builder.Dashtbl.data * State.t) list
  val find_all_local_data :
    ?who:State.t list ->
    State_builder.Dashtbl.key -> State.t -> State_builder.Dashtbl.data list
  val find_all_local_states :
    ?who:State.t list -> State_builder.Dashtbl.key -> State.t -> State.t list
  val find_all :
    ?who:State.t list ->
    State_builder.Dashtbl.key -> (State_builder.Dashtbl.data * State.t) list
  val find_all_data :
    ?who:State.t list ->
    State_builder.Dashtbl.key -> State_builder.Dashtbl.data list
  val find_all_states :
    ?who:State.t list -> State_builder.Dashtbl.key -> State.t list
  val iter :
    (State_builder.Dashtbl.key ->
     State.t option -> State_builder.Dashtbl.data * State.t -> unit) ->
    unit
  val iter_key :
    (State.t option -> State_builder.Dashtbl.data * State.t -> unit) ->
    State_builder.Dashtbl.key -> unit
  val fold :
    (State_builder.Dashtbl.key ->
     State.t option -> State_builder.Dashtbl.data * State.t -> '-> 'a) ->
    '-> 'a
  val fold_key :
    (State.t option -> State_builder.Dashtbl.data * State.t -> '-> 'a) ->
    State_builder.Dashtbl.key -> '-> 'a
  val length : unit -> int
  module Graph : Dashtbl.Graph
end