sig   type property =       Later of Property.t     | Proxy of Property.t * Emitter.t * Property.t list   module type Info =     sig       val name : string       val dependencies : State.t list       val size : int       type key       val property : Wprop.Info.key -> Wprop.property     end   module type Indexed =     sig       type key       val mem : Wprop.Indexed.key -> bool       val property : Wprop.Indexed.key -> Property.t       val add_hook : (Wprop.Indexed.key -> Property.t -> unit) -> unit     end   module type Indexed2 =     sig       type key1       type key2       val mem : Wprop.Indexed2.key1 -> Wprop.Indexed2.key2 -> bool       val property : Wprop.Indexed2.key1 -> Wprop.Indexed2.key2 -> Property.t       val add_hook :         (Wprop.Indexed2.key1 -> Wprop.Indexed2.key2 -> Property.t -> unit) ->         unit     end   module Indexed :     functor       (Key : Datatype.S_with_collections) (Info : sig                                                     val name : string                                                     val dependencies :                                                       State.t list                                                     val size : int                                                     type key = Key.t                                                     val property :                                                       key -> property                                                   end->       sig         type key = Key.t         val mem : key -> bool         val property : key -> Property.t         val add_hook : (key -> Property.t -> unit) -> unit       end   module Indexed2 :     functor       (Key1 : Datatype.S_with_collections) (Key2 : Datatype.S_with_collections) (Info :        sig         val name : string         val dependencies : State.t list         val size : int         type key = Key1.t * Key2.t         val property : key -> property       end->       sig         type key1 = Key1.t         type key2 = Key2.t         val mem : key1 -> key2 -> bool         val property : key1 -> key2 -> Property.t         val add_hook : (key1 -> key2 -> Property.t -> unit) -> unit       end end